হাস্কেলের একটি হাস্কেল দোভাষী লিখুন


90

একটি ক্লাসিক প্রোগ্রামিং অনুশীলন হ'ল লিস্প / স্কিমের একটি লিপ / স্কিম ইন্টারপ্রেটার লিখতে। ভাষার একটি উপসেটের জন্য দোভাষী তৈরি করতে সম্পূর্ণ ভাষার শক্তি ব্যবহার করা যেতে পারে।

হাস্কেলের জন্য কি একইরকম অনুশীলন রয়েছে? ইঞ্জিন হিসাবে হাস্কেলকে ব্যবহার করে আমি হাস্কেলের একটি সাবসেট বাস্তবায়ন করতে চাই। অবশ্যই এটি করা যেতে পারে, তবে কি দেখার জন্য কোনও অনলাইন সংস্থান আছে?


এখানে ব্যাকস্টোরি।

আমি শেখাচ্ছি এমন একটি কাঠামোগত কাঠামো কোর্সে কিছু ধারণাটি অন্বেষণ করার জন্য ভাষা হিসাবে হাস্কেলকে ব্যবহার করার ধারণাটি অন্বেষণ করছি। এই সেমিস্টারের জন্য আমি মিরান্দায় বসতি স্থাপন করেছি , যা হাস্কেলকে অনুপ্রাণিত করে একটি ছোট ভাষা। মিরান্ডা যা করতে চাইবে তার প্রায় 90% করে তবে হাসকেল প্রায় 2000% করেন। :)

সুতরাং আমার ধারণাটি হ্যাস্কেলের বৈশিষ্ট্যযুক্ত এমন একটি ভাষা তৈরি করা যা আমি পছন্দ করি এবং অন্য সমস্ত কিছুকে অস্বীকার করি। শিক্ষার্থীরা অগ্রগতির সাথে সাথে বেসিকগুলিতে দক্ষতা অর্জনের পরে আমি বিভিন্ন বৈশিষ্ট্যগুলি বেছে বেছে "চালু" করতে পারি।

জাভা এবং স্কিম শেখানোর জন্য শিক্ষাগত "ভাষার স্তর" সফলভাবে ব্যবহৃত হয়েছে । তারা যা করতে পারে তা সীমাবদ্ধ রেখে আপনি তাদের সিনট্যাক্স এবং ধারণাগুলি আয়ত্ত করার সময় আপনি তাদের পায়ে গুলি করা থেকে বিরত রাখতে পারেন you এবং আপনি আরও ভাল ত্রুটি বার্তা অফার করতে পারেন।


আমার বেসিক হিসাবে হাস্কেলের টাইপিং হাস্কেলের সাথে ডাব্লুআইপি হাস্কেল উপভাষা প্রয়োগ করা হয়েছে। এটির একটি ডেমো এখানে আছে chrisdone.com/toys/duet-delta এটি সর্বজনীন উন্মুক্ত উত্স প্রকাশের জন্য প্রস্তুত নয়, তবে আগ্রহী হলে আমি উত্সটি আপনার সাথে ভাগ করে নিতে পারি।
ক্রিস্টোফার সম্পন্ন হয়েছে

উত্তর:


76

আমি আপনার লক্ষ্য ভালবাসি, কিন্তু এটি একটি বড় কাজ। কয়েকটি ইঙ্গিত:

  • আমি জিএইচসিতে কাজ করেছি, এবং আপনি উত্সগুলির কোনও অংশ চান না। আলিঙ্গন একটি অনেক সহজ, ক্লিনার বাস্তবায়ন তবে দুর্ভাগ্যক্রমে এটি সি।

  • এটি ধাঁধার একটি ছোট্ট অংশ, তবে মার্ক জোনস হাসকেলে টাইপিং হাস্কেল নামে একটি সুন্দর কাগজ লিখেছিলেন যা আপনার সম্মুখ প্রান্তের জন্য একটি দুর্দান্ত সূচনা পয়েন্ট হবে।

শুভকামনা! শ্রেণিকক্ষ থেকে সমর্থনকারী প্রমাণ সহ হাস্কেলের জন্য ভাষার স্তর চিহ্নিতকরণ সম্প্রদায়ের পক্ষে অবশ্যই উপকারী হবে এবং অবশ্যই প্রকাশের ফলাফল হবে!


4
আমি ভাবছি জিএইচসি সম্পর্কে মন্তব্যটি এখনও সঠিক কিনা। জিএইচসি জটিল, তবে এটি বেশ ভালভাবে নথিভুক্ত। বিশেষত, অভ্যন্তরীণ Notesনিম্ন-স্তরের বিশদগুলি বোঝার জন্য সহায়ক এবং ওপেন-সোর্স অ্যাপ্লিকেশনগুলির আর্কিটেকচারের জিএইচসি সম্পর্কিত অধ্যায়টি একটি দুর্দান্ত উচ্চ-স্তরের ওভারভিউ সরবরাহ করে।
sjy

37

একটি সম্পূর্ণ হাস্কেল পার্সার রয়েছে: http://hackage.haskell.org/package/haskell-src-exts

একবার আপনি এটি বিশ্লেষণ করেছেন, কিছু নির্দিষ্ট জিনিস কেটে ফেলা বা বর্জন করা সহজ। আমি আমদানি বিবৃতিগুলি অস্বীকার করার জন্য, শীর্ষ-স্তরের সংজ্ঞাগুলি সমর্থন করার জন্য, এ চেষ্টা করেছিলাম।

মডিউলটি কেবল পার্স করুন:

parseModule :: String -> ParseResult Module

তারপরে আপনার কাছে একটি মডিউলটির জন্য একটি এএসটি রয়েছে:

Module SrcLoc ModuleName [ModulePragma] (Maybe WarningText) (Maybe [ExportSpec]) [ImportDecl] [Decl]    

ডেল প্রকারটি বিস্তৃত: http://hackage.haskell.org/packages/archive/haskell-src-exts/1.9.0/doc/html/Language-Haskell-Exts-Syntax.html#t%3ADecl

আপনাকে যা করতে হবে তা হ'ল একটি সাদা তালিকা সংজ্ঞায়িত করতে হবে - কী কী ঘোষণা, আমদানি, প্রতীক, সিনট্যাক্স উপলব্ধ তা সম্পর্কে, তারপরে এএসটি চালিয়ে যান এবং যে বিষয়ে আপনি সচেতন হতে চান না এমন কোনও কিছুতে "পার্স ত্রুটি" ফেলে দিন। আপনি এএসটিতে প্রতিটি নোডের সাথে সংযুক্ত SrcLoc মান ব্যবহার করতে পারেন:

data SrcLoc = SrcLoc
     { srcFilename :: String
     , srcLine :: Int
     , srcColumn :: Int
     }

হাস্কেলকে পুনরায় প্রয়োগের দরকার নেই। আপনি যদি আরও বন্ধুত্বপূর্ণ সংকলন ত্রুটিগুলি সরবরাহ করতে চান তবে কেবল কোডটি বিশ্লেষণ করুন, এটি ফিল্টার করুন, এটি সংকলকটিতে প্রেরণ করুন এবং সংকলক আউটপুটকে পার্স করুন। যদি এটি "ইনফার্ডের বিরুদ্ধে প্রত্যাশিত টাইপের সাথে মেলানো যায় না a -> b" তবে আপনি জানেন যে এটি কোনও ফাংশনে সম্ভবত খুব কম যুক্তিযুক্ত।

আপনি যদি সত্যিই হাস্কেলকে স্ক্র্যাচ থেকে বাস্তবায়ন করতে বা হাগসের ইন্টার্নালগুলির সাথে জগাখিচুড়ি বা কিছু বোবা বাস্তবায়ন করতে ব্যয় করতে চান না, তবে আমি মনে করি যে আপনাকে জিএইচসি-তে পাস হবে তা ফিল্টার করা উচিত। এইভাবে, যদি আপনার শিক্ষার্থীরা তাদের কোড-বেস নিতে এবং এটি পরবর্তী পদক্ষেপে নিয়ে যেতে এবং কিছু সত্যিকারের সজ্জিত হাস্কেল কোড লিখতে চান তবে স্থানান্তরটি স্বচ্ছ।


24

আপনি কি স্ক্র্যাচ থেকে আপনার দোভাষী তৈরি করতে চান? ল্যাম্বদা ক্যালকুলাস বা লিস্প ভেরিয়েন্টের মতো একটি সহজ ক্রিয়ামূলক ভাষা বাস্তবায়নের সাথে শুরু করুন। আধুনিকতার জন্য একটি খুব সুন্দর উইকিবুক রয়েছে যা 48 ঘন্টা পরে নিজেকে একটি স্কিম লিখুন called জন্য পার্সিং এবং ব্যাখ্যার কৌশলগুলিতে একটি শীতল এবং বাস্তবিক ভূমিকা দেওয়ার জন্য একটি দুর্দান্ত ।

হাতে কলমে হ্যাস্কেলকে ব্যাখ্যা করা আরও জটিল হবে যেহেতু আপনাকে টাইপক্লাস, একটি অত্যন্ত শক্তিশালী টাইপ সিস্টেম (টাইপ-ইনফারেন্স!) এবং অলস-মূল্যায়ন (হ্রাস কৌশল) এর মতো অত্যন্ত জটিল বৈশিষ্ট্যগুলির সাথে মোকাবিলা করতে হবে।

সুতরাং আপনার সাথে কাজ করার জন্য হাস্কেলের একটি সামান্য উপসেটটি সংজ্ঞায়িত করা উচিত এবং তারপরে স্কিম-উদাহরণটি ধাপে ধাপে প্রসারিত করে শুরু করা উচিত।

সংযোজন:

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

ব্যবহারের জন্য প্যাকেজটি হিন্ট (ভাষা.হ্যাস্কেল। *) । দুর্ভাগ্যক্রমে আমি এ সম্পর্কিত কোন অনলাইন টিউটোরিয়াল খুঁজে পাইনি বা নিজেই চেষ্টা করে দেখলাম না তবে এটি বেশ আশাব্যঞ্জক বলে মনে হচ্ছে।


12
নোট করুন যে টাইপ-ইনফারেন্সটি আসলেই খুব সহজ, 20-30 লাইন অ্যালগরিদম। এটি তার সরলতায় সুন্দর। অলস মূল্যায়নও এনকোড করা এত কঠিন নয়। আমি বলতে পারি যে অসুবিধাটি পাগল বাক্য গঠন, প্যাটার্ন মেলানো এবং ভাষার প্রচুর পরিমাণে স্টাফের মধ্যে রয়েছে।
ক্লদিউ

আকর্ষণীয় - আপনি টাইপ-ইনফারেন্স আলগোসের জন্য লিঙ্কগুলি পোস্ট করতে পারেন?
দারিও

4
হ্যাঁ, এই নিখরচায় বইটি দেখুন - cs.brown.edu/~sk/Publications/Books/ProgLangs/2007-04-26 -, এটি পৃষ্ঠা 273 (পিডিএফের 289) এ রয়েছে। আলগ সিউডোকোড P296 এ রয়েছে।
ক্লাদিউ


4
প্রকার-শ্রেণীর সাথে টাইপ অনুক্রম সহজ নয়, যদিও।
ক্রিস্টোফার

20

এমন একটি ভাষা তৈরি করুন যাতে হাসকলের বৈশিষ্ট্যগুলি হ'ল যা আমি পছন্দ করি এবং অন্য সব কিছু অস্বীকার করি। শিক্ষার্থীরা অগ্রগতির সাথে সাথে বেসিকগুলিতে দক্ষতা অর্জনের পরে আমি বিভিন্ন বৈশিষ্ট্যগুলি বেছে বেছে "চালু" করতে পারি।

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

এটি এইচ এলিন্টের সাথে সমান হবে (এবং এর বিপরীতেও হবে):

এইচ এলিন্ট (পূর্বে ডাঃ হাস্কেল) হাস্কেল প্রোগ্রামগুলি পড়ে এবং এমন পরিবর্তনগুলির পরামর্শ দেয় যা আশা করি তাদের পড়া সহজ করে তোলে। এইচএলিন্ট অনাকাঙ্ক্ষিত পরামর্শগুলি অক্ষম করা এবং আপনার নিজস্ব কাস্টম পরামর্শ যুক্ত করা সহজ করে তোলে।

  • আপনি যে বৈশিষ্ট্যগুলি মঞ্জুরি দেন না সেগুলি ব্যবহার না করার জন্য আপনার নিজের এইচ এলিন্ট "পরামর্শ" প্রয়োগ করুন
  • সমস্ত স্ট্যান্ডার্ড এইচ এলিন্ট পরামর্শগুলি অক্ষম করুন।
  • আপনার মোড়ককে প্রথম পদক্ষেপ হিসাবে আপনার সংশোধিত এইচএলিন্টটি চালান
  • HLint পরামর্শগুলি ত্রুটি হিসাবে বিবেচনা করুন। এটি হ'ল, যদি এইচ এলিন্ট "অভিযোগ" করেন তবে প্রোগ্রামটি সংকলনের পর্যায়ে এগিয়ে যায় না

16

বাস্কেল একটি শিক্ষামূলক বাস্তবায়ন, http://hackage.haskell.org/package/baskell

আপনি ঠিক চয়ন করে শুরু করতে পারেন, বলুন, প্রয়োগ করার জন্য টাইপ সিস্টেম। এটি প্রকল্পের দোভাষী হিসাবে প্রায় জটিল, http://hackage.haskell.org/package/thih thi


6

সংকলকগুলির EHC সিরিজ সম্ভবত সেরা বেট: এটি সক্রিয়ভাবে বিকশিত হয়েছে এবং আপনি যা চান ঠিক তেমনটিই মনে হচ্ছে - ছোট্ট ল্যাম্বডা ক্যালকুলি সংকলক / দোভাষীর একটি সিরিজ হাস্কেল '98-এ সমাপ্ত।

তবে আপনি পিয়ার্সের প্রকার এবং প্রোগ্রামিং ভাষায় বিকশিত বিভিন্ন ভাষা , বা হিলিয়াম দোভাষী (একটি পঙ্গু হাস্কেল শিক্ষার্থীদের জন্য http://en.wikedia.org/wiki/Helium_(Haskell) দেখতে পারেন )।


6

যদি আপনি হাসকলের একটি উপসেট সন্ধান করছেন যা কার্যকর করা সহজ, আপনি প্রকারের ক্লাস এবং টাইপ চেকিংয়ের সাহায্যে করতে পারেন। প্রকারের ক্লাস ছাড়া আপনার হাস্কেল কোডটি মূল্যায়নের জন্য টাইপ অনুক্রমের প্রয়োজন হয় না।

আমি একটি স্ব-সংকলন হাস্কেল সাবসেট সংকলক লিখেছিকোড গল্ফ চ্যালেঞ্জের জন্য । এটি ইনপুটটিতে হাসেল সাবসেট কোড নেয় এবং আউটপুটটিতে সি কোড উত্পাদন করে। আমি দুঃখিত যে এখানে আরও বেশি পাঠযোগ্য সংস্করণ উপলব্ধ নেই; আমি স্ব-সংকলন তৈরির প্রক্রিয়ায় হাতছাড়া নেস্টেট সংজ্ঞাগুলি তুলেছি।

হাস্কেলের সাবসেটের জন্য দোভাষী প্রয়োগ করতে আগ্রহী একজন শিক্ষার্থীর জন্য, আমি নিম্নলিখিত বৈশিষ্ট্যগুলি দিয়ে শুরু করার পরামর্শ দেব:

  • অলস মূল্যায়ন। দোভাষী যদি হাসকেলে থাকেন তবে আপনাকে এ জন্য কিছু করতে হবে না।

  • প্যাটার্ন-মেলানো আর্গুমেন্ট এবং গার্ডগুলির সাথে ফাংশন সংজ্ঞা। কেবল পরিবর্তনশীল, কনস, শূন্য এবং _নিদর্শনগুলির জন্য উদ্বেগ।

  • সাধারণ অভিব্যক্তি বাক্য গঠন:

    • পূর্ণসংখ্যার আক্ষরিক

    • অক্ষর আক্ষরিক

    • [] (শূন্য)

    • ফাংশন অ্যাপ্লিকেশন (বাম সহযোগী)

    • ইনফিক্স :(কনস, ডান সহযোগী)

    • প্যারেন্টেসিস

    • পরিবর্তনশীল নাম

    • ফাংশন নাম

আরও দৃ concrete়ভাবে, একটি দোভাষী লিখুন যা এটি চালাতে পারে:

-- tail :: [a] -> [a]
tail (_:xs) = xs

-- append :: [a] -> [a] -> [a]
append []     ys = ys
append (x:xs) ys = x : append xs ys

-- zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
zipWith f (a:as) (b:bs) = f a b : zipWith f as bs
zipWith _ _      _      = []

-- showList :: (a -> String) -> [a] -> String
showList _    []     = '[' : ']' : []
showList show (x:xs) = '[' : append (show x) (showItems show xs)

-- showItems :: (a -> String) -> [a] -> String
showItems show []     = ']' : []
showItems show (x:xs) = ',' : append (show x) (showItems show xs)

-- fibs :: [Int]
fibs = 0 : 1 : zipWith add fibs (tail fibs)

-- main :: String
main = showList showInt (take 40 fibs)

টাইপ চেকিং হাস্কেলের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য। যাইহোক, হাস্কেল সংকলককে টাইপ-চেক করা থেকে কিছুই নেওয়া খুব কঠিন। আপনি যদি উপরের জন্য দোভাষী লিখে শুরু করেন তবে এতে টাইপ চেক যুক্ত করা কম সাহসী হওয়া উচিত।


"অলস মূল্যায়ন। দোভাষী যদি হাস্কেলতে থাকেন তবে আপনাকে এ জন্য কিছু করতে হবে না।" এই সত্য নাও হতে পারে। হাস্কেল- তে অলস দোভাষীকে বাস্তবায়নের বিষয়ে আরও তথ্যের জন্য haskell.org/wikiupload/0/0a/TMR-Issue10.pdf এ নাইলারের নিবন্ধটি দেখুন ।
জারেড আপডেটিকে


3

এটি একটি ভাল ধারণা হতে পারে - হাস্কেলে নেটলোগোর একটি ছোট সংস্করণ তৈরি করুন। এখানে ছোট দোভাষী।


লিঙ্কগুলি মারা গেছে। এই বিষয়বস্তু এখনও অন্য কোথাও বিদ্যমান কোন সুযোগ আছে? আমি কৌতূহলী হব ...
নিকোলাস পায়েট

এইচএমএম এটি একটি ব্লগ পোস্ট ছিল এবং এটি অনুসন্ধান করতে কোন কীওয়ার্ড ব্যবহার করতে হবে তা আমার কোনও ধারণা নেই। একটি লিঙ্ক সরবরাহ করার সময় আরও যথেষ্ট তথ্য অন্তর্ভুক্ত করার একটি ভাল পাঠ ...
ক্লডিউ

4
"নেটলোগো হ্যাশেল" এর জন্য একটি গুগল অনুসন্ধান চালু হয়েছে ... এই প্রশ্নটি। যাইহোক, কোন বড় ব্যাপার। ধন্যবাদ!
নিকোলাস পায়েট



2

আমাকে বলা হয়েছে যে ইদ্রিসের মোটামুটি কমপ্যাক্ট পার্সার রয়েছে, এটি সত্যিকার অর্থে পরিবর্তনের জন্য উপযুক্ত কিনা তা নিশ্চিত নন, তবে এটি হাস্কেলে লেখা আছে written


2

Andrej বাউইর এর প্রোগ্রামিং ভাষা চিড়িয়াখানা কিছুটা cheekily "minihaskell" নামে একটি বিশুদ্ধরূপে কার্মিক প্রোগ্রামিং ভাষা একটি ছোট বাস্তবায়ন হয়েছে। এটি ওক্যামেলের প্রায় 700 লাইন, হজম করা খুব সহজ।

সাইটে এমএল-স্টাইল, প্রোলোগ-স্টাইল এবং ওও প্রোগ্রামিং ল্যাঙ্গুয়েজের খেলনা সংস্করণও রয়েছে।


1

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

জিএইচসি যেভাবেই হোক হাস্কেলতে লেখা আছে, প্রযুক্তিগতভাবে যা আপনার হাস্কেলতে লিখিত হাস্কেল দোভাষী সম্পর্কে আপনার প্রশ্নের সাথে স্থির থাকে।

পুরো জিনিসটিকে স্থিতিশীলভাবে সংযুক্ত করা এবং তারপরে কেবল আপনার পছন্দসই জিএইচসিআই বিতরণ করা খুব কঠিন হবে না, যাতে শিক্ষার্থীরা অন্যান্য হাস্কেল উত্স মডিউল লোড করতে না পারে। অন্যান্য হাস্কেল অবজেক্ট ফাইলগুলি লোড করা থেকে তাদের রোধ করতে কতটা কাজ লাগবে সে সম্পর্কে আমার কোনও ধারণা নেই। আপনার ক্লাসে যদি এক ধরণের প্রতারক থাকে তবে আপনি এফএফআইও অক্ষম করতে চাইতে পারেন :)


4
এটি যতটা শোনা যায় তত সহজ নয়, যতগুলি বৈশিষ্ট্য অন্যের উপর নির্ভর করে। তবে সম্ভবত ওপি প্রিলিউড আমদানি না করে তার নিজস্ব সরবরাহ করতে চায়। আপনি দেখতে পেয়েছেন বেশিরভাগ হাস্কেলই সাধারণ ফাংশন, রানটাইমের নির্দিষ্ট বৈশিষ্ট্য নয়। (তবে অবশ্যই অনেকগুলি রয়েছে ))
jrockway

0

এতগুলি এলআইএসপি ইন্টারপ্রেটার থাকার কারণ হ'ল এলআইএসপি মূলত জেএসএনের পূর্বসূর: ডেটা এনকোড করার একটি সহজ বিন্যাস। এটি সামনের অংশটি পরিচালনা করা বেশ সহজ করে তোলে। এর তুলনায়, বিশেষত ভাষা এক্সটেনশনের সাথে হাস্কেল, পার্স করার সহজতম ভাষা নয়। এগুলি এমন কিছু সিনট্যাক্টিকাল কনস্ট্রাক্টস যা সঠিক হয়ে উঠার জন্য কঠিন বলে মনে হচ্ছে:

  • কনফিগারযোগ্য অগ্রাধিকার, সাহসিতা এবং স্থিরতা সহ অপারেটরগুলি,
  • নেস্টেড মন্তব্য
  • বিন্যাসের নিয়ম
  • প্যাটার্ন সিনট্যাক্স
  • do- ব্লক এবং monadic কোড desugering

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

আমার পরামর্শটি Coreহ্যাস্কেলের পরিবর্তে সম্পূর্ণ টাইপচেকিং এবং একটি অনুবাদককে বাস্তবায়ন করা । এই দুটি কাজ ইতিমধ্যে নিজের দ্বারা বেশ জটিল। এই ভাষাটি এখনও দৃ strongly়ভাবে টাইপ করা কার্যকরী ভাষা হলেও অপ্টিমাইজেশন এবং কোড জেনারেশনের ক্ষেত্রে সামান্য জটিল is তবে এটি অন্তর্নিহিত মেশিন থেকে এখনও স্বাধীন। অতএব, জিএইচসি এটিকে মধ্যস্থতাকারী ভাষা হিসাবে ব্যবহার করে এবং এর মধ্যে হাস্কেলের বেশিরভাগ বাক্য গঠনের অনুবাদ করে।

অতিরিক্তভাবে, আপনাকে জিএইচসি'র (বা অন্য কোনও সংকলক) ফ্রন্টএন্ড ব্যবহার করা থেকে বিরত থাকা উচিত নয়। কাস্টম এলআইএসপিগুলি হোস্ট এলআইএসপি সিস্টেমের পার্সার (কমপক্ষে বুটস্ট্র্যাপিংয়ের সময়) ব্যবহার করার কারণে আমি প্রতারণার বিষয়টি বিবেচনা করব না। Coreমূল কোড সহ স্নিপেটগুলি পরিষ্কার করে এবং শিক্ষার্থীদের কাছে উপস্থাপিত করার মাধ্যমে আপনাকে অগ্রভাগ কী করবে এবং এটি পুনরায় সংশোধন না করাই কেন ভাল of তার একটি সংক্ষিপ্ত বিবরণ দেওয়ার অনুমতি দেওয়া উচিত।

এখানে Coreজিএইচসিতে ব্যবহৃত ডকুমেন্টেশনের কয়েকটি লিঙ্ক রয়েছে :

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.