ওক্যামেল সমালোচনা: এটি কি এখনও বৈধ?


15

আমি ওক্যামেলের সাথে সম্পূর্ণ নবাগত। আমি সম্প্রতি এই পৃষ্ঠাতে হোঁচট খেয়েছি ওসিএএমএল এর প্রতি ভাল পরিমাণ সমালোচনা তালিকাবদ্ধ করে।

এটি পৃষ্ঠাটি বেশ পুরানো (2007) দেখে: বুলেট পয়েন্টগুলির তালিকাভুক্ত কোনটি আজও সত্য? উদাহরণস্বরূপ: এটি এখনও সত্য যে জেনেরিক কোনও বিষয় মুদ্রণ করা অসম্ভব?

আমি এটিকে পরিষ্কার করতে চাই যে আমি তাতে প্রকাশিত মতামতের একটি আলোচনা খুঁজছি না। আমি জিজ্ঞাসা করছি যে তালিকাভুক্ত তথ্য যেমন সতর্কতা ছাড়াই পূর্ণসংখ্যার ওভারফ্লো হয়ে যায়, ওসিএএমএল এর আরও সাম্প্রতিক সংস্করণের জন্য এখনও সঠিক কিনা


5
আমি এই প্রশ্নটিকে অফ-টপিক হিসাবে বন্ধ করতে ভোট দিচ্ছি কারণ meta.programmers.stackexchange.com/questions/6417/…
ফিলিপ

3
একটি কাঁটাচামচ আছে যেখানে সেগুলি সম্ভবত স্থির করা হয়েছে: tryfsharp.org
ডেন

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

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

2
@ ডোভাল: অবশ্যই আপনি হার্ডওয়্যারের ওভারফ্লো সনাক্ত করতে পারেন। এটির সাথে ডিল করা অবশ্য একটি সফ্টওয়্যার বিষয়।
ম্যাসন হুইলার

উত্তর:


13

এই নিবন্ধটি বেশ কয়েকটি জায়গায় আলোচনা করা হয়েছে:

সংক্ষিপ্তসার হিসাবে: হ্যাঁ, ওক্যামেল কোনও লিস্প নয় এবং না, এটি নিখুঁত নয় (এর অর্থ কী?) আমি মনে করি না যে ব্লগ পোস্টে উল্লিখিত পয়েন্টগুলি দিন-ও-ও-ক্যামেল প্রোগ্রামারদের জন্য প্রাসঙ্গিক।

ও'ক্যামল নিয়ে পড়াশোনা করার পরে, আমি মনে করি এটি একটি আকর্ষণীয় ভাষা যা আপনাকে এমন প্রোগ্রাম তৈরি করতে সহায়তা করতে পারে যা আপনি লিখতেও সাহস পাবেন না, বলুন, সি / সি ++ / জাভা: উদাহরণস্বরূপ, ফ্রেমা-সি দেখুন

ও'ক্যামেলের একটি আপ-টু-ডেট বর্ণনার জন্য, আমি আপনাকে এর বৈশিষ্ট্যগুলি সম্পর্কে পড়তে উত্সাহিত করি: ভাষাটি দৃ stat় স্থিতিশীল প্রকারের চেকিং কৌশলগুলি প্রচার করে যা বাস্তবায়নগুলি পারফরম্যান্ট, তবুও নিরাপদ, রানটাইম উত্পাদন করতে ফোকাস করতে সহায়তা করে।

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

স্ট্যাটিক টাইপ চেকিং

  • সুরক্ষার ভুয়া অনুভূতি

    এটি সত্য, তবে সুস্পষ্ট।

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

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

    একই জিনিসটি যেমন কমন লিস্পের ক্ষেত্রে প্রযোজ্য, তবে বিপরীত হয়েছে: প্রথমে গতিশীল প্রকার, alচ্ছিক ধরণের ঘোষণাপত্র এবং দ্বিতীয় সংকলক নির্দেশিকা সহ।

  • কয়েকটি বেসিক প্রকার

    তবুও প্রযোজ্য: মূল ভাষা পরিবর্তন হয়নি (বা নাটকীয়ভাবে নয়)।

  • সাইলেন্ট ইন্টিজার ওভারফ্লো

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

  • মডিউল অপরিচ্ছন্নতা

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

    2. " শব্দার্থকভাবে , ফাংশনগুলি ইনলাইন সংকলিত হয়"

    উপরের রেডডিট থ্রেডটি একমত নয়, এই বলে যে বাঁধাই লিংক সময়ে সমাধান করা হয়। যাইহোক, এটি একটি বাস্তবায়ন বিশদ এবং আমি মনে করি যে জোর দেওয়া শব্দগুলি কার্যকারিতা সমাধানের সাথে সম্পর্কিত। উদাহরণ:

     let f x y = x + y ;;
     let g a b = f b a ;;
     let f x y = x * y ;;
     exit (g 2 3) ;;
    

    উপরে প্রোগ্রাম প্রনয়ন, এবং যখন মৃত্যুদন্ড কার্যকর, ফেরৎ 5, কারণ gপ্রথম সংস্করণের সাথে সংজ্ঞায়িত করা হয় f, শুধু হিসাবে-যদি কলিং ফাংশন gকল inlined f। এটি "খারাপ" নয়, যাইহোক, এটি ও'ক্যামেলের নাম ছায়ার নিয়মের সাথে কেবল সামঞ্জস্যপূর্ণ।

    সংক্ষেপে : হ্যাঁ, মডিউলগুলি অপরিবর্তনীয় । তবে এগুলিও কমপোজযোগ্য

  • পলিমারফিজম রান-টাইম ধরণের ত্রুটিগুলির কারণ ঘটায়

    আমি উল্লিখিত ত্রুটিটি পুনরুত্পাদন করতে পারি না। আমি এটি একটি সংকলক ত্রুটি বলে সন্দেহ করি।

ম্যাক্রো নেই

প্রকৃতপক্ষে, কোনও ম্যাক্রোগুলি ছাড়াও প্রিপ্রেসেসর নেই (ওকামলপি 4, ওক্যামলপি 5, ...)।

মাইনর ল্যাঙ্গুয়েজ সিকনেস

  • রেকর্ড ক্ষেত্রের নামকরণ

    সত্য, তবে আপনার মডিউলগুলি ব্যবহার করা উচিত:

    1. দুটি রেকর্ডের দুটি ক্ষেত্রের ওক্যামেলে একই লেবেল রয়েছে
    2. ক্ষেত্রের নামগুলি সমাধান করা
  • বাক্য গঠন

    এখনও প্রয়োগ হয় (তবে সত্যই, এটি কেবল বাক্য গঠন)।

  • পলিমারফিজম নেই

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

  • বেমানান ফাংশন সেট

    দেখুন OCaml ব্যাটারি অন্তর্ভুক্ত প্রকল্পের। বিশেষত ব্যাটারি , map2অ্যারের উদাহরণের জন্য।

  • কোনও গতিশীল ভেরিয়েবল নেই

    প্রয়োগ করা যেতে পারে:

    1. http://okmij.org/ftp/ML/dynvar.txt
    2. http://okmij.org/ftp/ML/index.html#dynvar
  • Ptionচ্ছিক ~ আর্গুমেন্ট স্তন্যপান

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

  • আংশিক যুক্তির প্রয়োগের অসঙ্গতি

    আমি মনে করি না এটি বাস্তবে এটি বিরক্তিকর।

  • পাটিগণিতের পঠনযোগ্যতা

    এটি ধারণ করে, তবে আপনি যদি পছন্দ করেন তবে সংখ্যাগত সমস্যার জন্য আপনি আর বা পাইথন ব্যবহার করতে পারেন।

  • নীরব নাম বিরোধ বিরোধ

    এখনও প্রযোজ্য, তবে মনে রাখবেন এটি ভালভাবে নথিভুক্ত।

  • কোনও অবজেক্ট ইনপুট / আউটপুট নেই

    এখনও প্রয়োগ হয়।

বাস্তবায়ন, গ্রন্থাগারসমূহ

এগুলি প্রতিদিন পরিবর্তিত হয়: এর কোনও নির্দিষ্ট উত্তর নেই।

অবশেষে,

"আপনার ওসিএএমএল (বা আরও ভাল, হাস্কেল) চেষ্টা করা উচিত যদিও আপনি মনে করেন এটি সফল হয় এবং আপনি এটি ব্যবহার করার পরিকল্পনা করেন না it এটি ছাড়া আপনার কম্পিউটার বিজ্ঞানের শিক্ষা অসম্পূর্ণ, ঠিক যেমনটি কিছু লিস্প এবং সি ছাড়া অসম্পূর্ণ (বা , আরও ভাল, সমাবেশ) এক্সপোজার। "

... এখনও প্রয়োগ হয়।


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

@ আন্দ্রে আমি আমার উত্তর সম্পাদনা করেছি।
coredump

1
"... এমন লোক আছে যারা লিস্পের সংখ্যাযুক্ত টাওয়ারের পরিবর্তে (কেন জানি না) এর চেয়ে বেশি পছন্দ করে। বিঙ্গো। এসএমএল এবং ওক্যামেলের টাইপ সিস্টেমে প্রতিটি এক্সপ্রেশনটি কেবল একটি প্রকারের প্রয়োজন। এসএমএলের গণিত অপারেটরগুলির ওভারলোডিং ভাষাতে অন্তর্ভুক্ত ব্যতিক্রম। এটি হাস্কেলের ক্ষেত্রেও সত্য; এই ধরণের ওভারলোডিং সক্রিয় করা টাইপ ক্লাসগুলির পিছনে অনুপ্রেরণা ছিল। ক্যাচটি হ'ল আপনার কাছে প্রতি প্রকারের মধ্যে কেবল একটি ধরণের শ্রেণীর উদাহরণ থাকতে পারে। আপনি কোনও পূর্ণসংখ্যাকেও সমান আকারের ফ্লোটে অন্ধভাবে রূপান্তর করতে পারবেন না - একটি 64-বিট ফ্লোটটিতে কেবল 54 বিট নির্ভুলতা থাকে।
ডোভাল

@ দোভাল র‌্যাকেটের জন্য সংখ্যার টাওয়ারটি টাইপ করার মতো কী হবে ? পলিমারফিক গণিত অপারেটরদের সরবরাহের জন্য কোনও ওসিএএমএল লাইব্রেরি কল্পনা করতে পারি যা টাইপ ক্লাস বা জেনারালাইজড বীজগণিত ডেটা টাইপ (জিএডিটি) ব্যবহার করে? রূপান্তর সম্পর্কিত: সমস্ত ক্রিয়াকলাপ সম্ভব নয়, তবে কিছু রয়েছে এবং টাইপও করা যায়।
coredump

2
@ ডোভাল: "পুনঃ: বহুবিধ গণিত অপারেটররা, আমি হাসেলেলের ধরণের ক্লাস প্রয়োগ না করে কোনও উপায় নেই বলে মনে করি না"। এফ # তে বহু ধরণের গণিত অপারেটর রয়েছে টাইপ ক্লাস ছাড়াই।
জন হ্যারোপ

7

এটি পৃষ্ঠাটি বেশ পুরানো (2007) দেখে: বুলেট পয়েন্টগুলির তালিকাভুক্ত কোনটি আজও সত্য?

  • সুরক্ষার ভুয়া অনুভূতি । এটা অপদার্থ.

  • কয়েকটি বেসিক প্রকার । ওক্যামেলের এখন বাইটস এবং বাইট অ্যারে রয়েছে তবে কোনও বিল্ট-ইন ইউনিকোড স্ট্রিং, 16-বিট ইন্টিজার, স্বাক্ষরবিহীন পূর্ণসংখ্যা, 32-বিট ফ্লোট, ভেক্টর বা ম্যাট্রিক নেই। তৃতীয় পক্ষের গ্রন্থাগারগুলি এর কয়েকটি সরবরাহ করে।

  • সাইলেন্ট ইন্টিজার ওভারফ্লো । অপরিবর্তিত তবে এটি কখনও সমস্যা ছিল না।

  • মডিউল অপরিচ্ছন্নতা । তাঁর সুপারিশ যে ফাংশন এবং মডিউলগুলি পারস্পরিক পরিবর্তনযোগ্য হওয়া উচিত তা লিস্পের কাছে মারাত্মক থ্রোব্যাক এবং সত্যই খারাপ ধারণা। আপনি চাইলে আপনি মডিউলগুলি সুপারসাইড includeকরতে পারেন তবে অবশ্যই এগুলি পরিবর্তন করতে পারবেন না।

  • পলিমারফিজম রান-টাইম ধরণের ত্রুটিগুলির কারণ ঘটায় । এটি ওসিএএমএল নিয়ে একটি বড় সমস্যা এবং এটি ঠিক করা হয়নি। আপনার প্রকারগুলি বহুতল সমতা বিবর্তিত হওয়ার সাথে তুলনা এবং হ্যাশিং ব্যর্থ হতে শুরু করবে যখন তারা ফাংশনগুলির মতো ধরণের মুখোমুখি হয় এবং সমস্যাটি ডিবাগ করা খুব কঠিন। এফ # এর এই সমস্যার দুর্দান্ত সমাধান রয়েছে।

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

  • মোড়ানো । এটি একটি আসল সমস্যা ছিল এবং এটি ঠিক করা হয়নি। try ... finallyওসিএএমএল ভাষায় এখনও কোনও নির্মাণ নেই এবং স্টাডলিবায় এটি কোনও রেপার প্রয়োগ করছে না।

  • জায়গা । অপরিবর্তিত তবে অ-সমস্যা।

  • রেকর্ড ক্ষেত্র নামকরণ জাহান্নাম । মডিউলগুলি ব্যবহার করে আপনার কোডটি সঠিকভাবে গঠন করুন।

  • সিনট্যাক্স । অপরিবর্তিত তবে অ-সমস্যা।

  • পলিমারফিজম নেই । এটি লেখার সময় এটি বেশিরভাগ বোকা ছিল এবং কিছুই পরিবর্তিত হয়নি।

  • বেমানান ফাংশন সেট । ওসিএএমএল এখনও consফাংশন নেই। সেটা ঠিক আছে. আমি আমার ভাষায় লিস্প স্টাফ চাই না, ধন্যবাদ।

  • কোনও গতিশীল ভেরিয়েবল নেই । ওসিএএমএল সম্পর্কে ভাল জিনিস ছিল। ওসিএএমএল সম্পর্কে এখনও একটি ভাল জিনিস।

  • Ptionচ্ছিক ~ আর্গুমেন্ট স্তন্যপান । Ptionচ্ছিক আর্গুমেন্ট শিলা। আমি মাইক্রোসফ্টকে এফ #-তে optionচ্ছিক যুক্তি যুক্ত করার জন্য তাদের ব্যাজার্ড করেছি।

  • আংশিক যুক্তির প্রয়োগের অসঙ্গতি । অঁ্যা?

  • পাটিগণিতের পঠনযোগ্যতা । আমি 8 বছর আগে ওসিএএমএল ব্যবহার বন্ধ করার পরে এটি পরিবর্তন হয়েছে। স্পষ্টতই এখন আপনি করতে পারেন Int64.((q * n - s * s) / (n - 1L))

  • নীরব নাম বিরোধ বিরোধ । আপনি লিস্পে যেমন হবেন তেমনই তিনি আরএপিএল-তে ফুল-ব্লোড সফ্টওয়্যার বিকাশ করার চেষ্টা করছিলেন। ওক্যামেলে এটি করবেন না। কেবলমাত্র পরীক্ষার জন্য ডিসপোজেবল কোড এবং ইন্টারেক্টিভ টেকনিক্যাল কম্পিউটিংয়ের জন্য ফাইল এবং ব্যাচের সংকলনটি রিলিংটি ব্যবহার করুন RE

  • মূল্যায়নের আদেশ । এটি লেখার সময় এটি ভুল ছিল। মূল্যায়নের অর্ডার ওসিএএমএল-এ নির্ধারিত।

  • কোনও অবজেক্ট ইনপুট / আউটপুট নেই । তিনি একটি তৃতীয় পক্ষের লাইব্রেরিকে উদ্ধৃত করেছেন যা ইতিমধ্যে এই "সমস্যা" সমাধান করেছে।

  • সংকলকটি প্রথম ত্রুটির পরে থামে । অঁ্যা?

  • নেটিভলি সংকলিত এক্সিকিউটেবলের জন্য কোনও স্ট্যাক ট্রেস নেই । সংশোধন করা হয়েছে।

  • ডিবাগার চুষে দেয় । আমি কখনও ডিবাগারটি ব্যবহার করি নি। স্ট্যাটিক টাইপ চেকিং আমার প্রায় সমস্ত বাগগুলি ক্যাচ করে।

  • জিসি চুষে দেয় । আমি ওসিএএমএল এর জিসিটিকে একটি দুর্দান্ত সমস্যা ব্যতীত চমত্কার বলে মনে করেছি: গ্লোবাল লকটি সমান্তরাল প্রোগ্রামিংকে বাধা দেয়।

  • কোন অন্তর্নিহিত এগিয়ে ঘোষণা । মিউচুয়াল পুনরাবৃত্তি সমস্ত এমএলগুলিতে ডিজাইন দ্বারা স্পষ্ট। একমাত্র অবাস্তবতাটি হ'ল typeসংজ্ঞাগুলি ডিফল্ট দ্বারা পুনরাবৃত্ত হয় তবে letবাইন্ডিংগুলি ডিফল্টরূপে পুনরাবৃত্ত হয়।

  • ফাংশন রাউন্ড অনুপস্থিত । ওক্যামেলটিতে এখনও একটি হাড় স্টাডলিব রয়েছে তবে জ্যান সেন্টের কোর এর মতো তৃতীয় পক্ষের লাইব্রেরি roundএবং বন্ধুরা সরবরাহ করে।

  • তালিকাList.mapএখনও লেজ পুনরুক্তি হয় না। আমি এই জাতীয় গুরুতর বাগগুলি ঠিক করতে প্যাচগুলি জমা দিয়েছিলাম এবং রিলিজে আসার আগে কয়েক বছর অপেক্ষা করতে হয়েছিল। তালিকাগুলি অবশ্যই অপরিবর্তনীয়। এবং তাই তাদের হওয়া উচিত।

  • গতি । আমি বিশ্বাস করি বড় পলিমারফিক বৈকল্পিকগুলির জন্য সংকলনের সময়গুলি ঠিক করা হয়েছে।

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

উদাহরণস্বরূপ: এটি এখনও সত্য যে জেনেরিক কোনও বিষয় মুদ্রণ করা অসম্ভব?

যখন তিনি লিখেছেন যে আপনি সহজভাবে করতে পারবেন না:

print value

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


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

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

@ কর্ডাম্প: "ওসিএএমএল উত্স কোড এবং অপটিমা উভয়ই একই কাগজের উল্লেখ করেছে"। সেই কাগজে বর্ণিত কৌশলগুলি সম্পূর্ণ এমএল টাইপ সিস্টেমের উপরে নির্মিত built একটি টাইপ সিস্টেম যা লিস্পে নেই। অপটিমা সেই কাগজে বর্ণিত যা অনেক কিছুই করে না এবং করতে পারে না। মাত্র 4.2 বিভাগটি দেখুন "ক্লান্তিকর তথ্য ব্যবহার করে"। লিস্পে কোনও ক্লান্তিকর তথ্য নেই কারণ কোনও বৈকল্পিক ধরণের নেই। উদাহরণস্বরূপ, ওক্যামেল নেস্টেড জাম্প বা পাতার সংখ্যার উপর ভিত্তি করে প্রেরণ টেবিলের মধ্যে নির্বাচন করেন তবে লিস্পে সেই তথ্য অজানা।
জন হ্যারোপ

লিস্প এবং ওক্যামল বিভিন্ন জিনিসের জন্য নকশাকৃত (যেমন ডায়নামিজম, চিত্র-ভিত্তিক প্রোগ্রামিং)। কিন্তু পাতার মর্মর হয়েছে একটি টাইপ সিস্টেম, Hindley-মিলনার থেকে আলাদা, এবং বাস্তবায়নের না সংকলন করার সময় এটা কাজে লাগান। কাগজের ৪.২ বিভাগের উদাহরণ সহ এই এসবিসিএল অধিবেশনটি দেখুন । সংক্ষিপ্ততা ইতিমধ্যে টাইপ অনুমান এবং ঘোষণা থেকে সংকলক দ্বারা পরীক্ষা করা হয়। অপটিমা সংকলন-সময় ম্যাক্রোপেক্সেনশন (বা এসবিসিএল ভিওপিগুলি) এর জন্য অন্যান্য কৌশল অর্জনের জন্য বাস্তবায়ন-নির্দিষ্ট কোড যুক্ত করতে পারে, তবে এটি করার জন্য যথেষ্ট উত্সাহ নেই।
coredump

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