আমি হাসেল রেকর্ড সিনট্যাক্সে কিছুটা অস্বস্তি বোধ করছি


9

বেশিরভাগ হাস্কেল সিনট্যাক্সে বিশুদ্ধতার সৌন্দর্য রয়েছে। তবে রেকর্ড বাক্য গঠনটি দেখতে কুৎসিত দেখাচ্ছে। এটা অস্বস্তিকর এটি সি এর সাথে একরকম মিশ্রণ অনুভব করে এর জন্য কমা এবং ধনুর্বন্ধনী প্রয়োজন। হাস্কেলের ট্যাব, লাইন ভিত্তিক বিচ্ছেদ রয়েছে। সুতরাং এটি প্রাথমিকভাবে এটির প্রয়োজনের তুলনায় খুব ভার্বোস দেখাচ্ছে। কেন এটি সেভাবে ডিজাইন করা হয়েছে?


4
আমার কাছে হাস্কেল সমস্তই অদ্ভুত বোধ করে। আমি কি করতে পারি?
কাজ

7
তুমি একা নও বেশ কিছু লোক রেকর্ড সম্পর্কে (বর্তমান অবতার) অভিযোগ করে।

ইওনিল: আপনি যদি সত্যিই রেকর্ড বাক্য গঠনটিকে ঘৃণা করেন তবে আপনি এটিকে {- # NoTraditionalRecordSyntax # -} GHC এক্সটেনশন দিয়ে অক্ষম করতে পারেন।
ড্যানিয়েল দাজ ক্যারেট

উত্তর:


8

আমি যখন ডিজাইন কমিটিতে ছিলাম না, তখন আমি গণনা করি যে রেকর্ড সিনট্যাক্সটি তালিকা বাক্য গঠনের সাথে সামঞ্জস্যপূর্ণ হয়েছিল। মডিউল রফতানি সিনট্যাক্সটিও কমা ব্যবহার করে, কেবলমাত্র আসল স্থান যেখানে লেআউটটি ব্যবহৃত হয় তা হ'ল শীর্ষ-স্তরের ঘোষণাগুলি, যেখানে ক্লজ এবং কর-স্বীকৃতি।

যে উপরে, দেওয়া

data Foo = Foo {bar :: Int, baz :: Int}

লেখা

fnord x = x { bar = 4 }

ধনুর্বন্ধনী ব্যতীত বাক্য বাক্য বাক্যগুলির সাথে সংঘাত তৈরি করে এবং লেআউট ব্যবহার করে

fnord x = x
    bar = 4

সিনট্যাক্সটি বেশ ভঙ্গুর করে তোলে। ভুল জায়গায় একটি "যেখানে" যুক্ত করুন এবং আপনার কোডের অর্থ সম্পূর্ণ আলাদা something

আপনি যদি হাস্কেলের রেকর্ডগুলির অবস্থার সাথে সন্তুষ্ট না হন (এবং আপনি এটির সাথে একা থাকবেন না), আমি আপনাকে সুপারিশ করি যে আপনি এইচ এলিস্ট বা আঙ্গুর-রেকর্ডের মতো বিস্তৃত টাইপক্লাস হ্যাকারি (এমনকি দ্বিতীয়টি দুটি নয়) হৃদয়ের মূর্ছা জন্য, কিন্তু অত্যধিক শক্তিশালী)

fclabels আপনাকে লেখার অনুমতি দেবে (ইয়ে পয়েন্টফ্রি)

fnord = setL bar 4

পাশাপাশি

getBar = getL bar

এটির শীর্ষে প্রকৃত রাইসন ডি'এত্রে, যা লেবেল রচনা করছে:

 data Person = Person { _place  :: Place, ... }
 data Place = Place { _city :: String, ... }

 moveToAmsterdam :: Person -> Person
 moveToAmsterdam = setL (city . place) "Amsterdam"

হুম। setLপার্থক্য মানে কি ?? আইও ছাড়া? এটি বুঝতে অসুবিধা ...
Eonil

2
মোটেও নয়, আপনি একক ক্ষেত্রের সাথে রেকর্ডের অন্য (ভাগ করে নেওয়া) অনুলিপিটি পেতে চলেছেন ঠিক যেমন রেকর্ড সিনট্যাক্সের সাথে। কোনও পরিবর্তনীয়তা বা রেফারেন্সিয়াল স্বচ্ছতার সাথে জড়িত না।
বারসোপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.