ব্যবহারিক প্রোগ্রামিং ভাষার মূল ধরন হিসাবে এলিমেন্টারি আফাইন লজিক ব্যবহার করা যেতে পারে?


9

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

আমার প্রশ্ন হল, কেউ কীভাবে EAL কে অন্তর্নিহিত টাইপ সিস্টেম হিসাবে ব্যবহার করে ব্যবহারিক প্রোগ্রামিং ভাষা তৈরি করতে পারে? উদাহরণস্বরূপ, কী ধরনের এক্সটেনশনগুলি (ফিক্স-পয়েন্টস, পলিমॉर्फিজম, নির্ভরশীল প্রকারগুলি, ডেটাটাইপস ইত্যাদি) সেই বৈশিষ্ট্যটিকে প্রভাবিত না করে মূল টাইপ সিস্টেমে তৈরি করা যেতে পারে, এবং ভাষাটি ব্যবহারে ব্যবহারযোগ্য হতে পারে, বা এটি কোনওরকমও হতে পারে? সীমাবদ্ধ কারণে কি আমি সচেতন নই?


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

ওফস, ঠিক আছে। এছাড়াও, আমি যতদূর বুঝতে পেরেছি, এমন পদগুলিও রয়েছে যা বিমূর্ত আলগোরিদম দিয়ে হ্রাস করা যেতে পারে, তবে EAL টাইপ নেই, তাই না? সুতরাং, যদিও সমস্ত EAL পদগুলি ওরাকল ছাড়াই হ্রাস করা যেতে পারে, বিমূর্ত আলগোরিদম এবং EAL এর মধ্যে এখনও কিছু অমিল রয়েছে। @ দামিয়ানোমাজা
— মাইয়াভিক্টর

হ্যাঁ, এটা সঠিক।
— দামিয়ানো মাজাজা

1
"যাইহোক, কেউ আপনাকে কী পেতে পারে তা চেষ্টা করতে এবং দেখতে নিষেধ করে!" - 3 বছর পরে: হ্যাঁ, কেউ আমাকে বারণ করেন না, তাই আমি এটি করেছিলাম! docs.formality-lang.org । আপনার সমস্ত সহায়তার জন্য ধন্যবাদ :)
— মায়াভিক্টর

উত্তর:


10

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

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

এর পরিণতি হ'ল EAL এ আপনি নির্বিচারে ফিক্সপয়েন্ট ব্যবহার করতে পারেন (উদাহরণস্বরূপ বেলোটের এই অন্যান্য কাগজটি দেখুন ) এবং প্রাকৃতিক পুনরাবৃত্ত শৈলীতে ডেটা প্রকারগুলি সংজ্ঞায়িত করুন (যেমন ), কম প্রাকৃতিক (প্রোগ্রামিং দৃষ্টিকোণ থেকে) সিস্টেম এফ সংজ্ঞা সহ তবে, টাইপযুক্ত স্বাভাবিককরণের উপরের মন্তব্য দ্বারা, EAL ভিত্তিক একটি প্রোগ্রামিং ভাষা সর্বদা মোটlist A:=nil|A ∗ list A, যার অর্থ আপনার কাছে কোনও ফিক্সপয়েন্ট সমন্বয়কারী নেই এবং পুনরাবৃত্ত প্রকারের ব্যবহার আপনার প্রত্যাশার মতো প্রাকৃতিক নয়। উদাহরণস্বরূপ, স্কট সংখ্যার নিন: পুনরাবৃত্ত সংজ্ঞা ব্যতীত (ফিক্সপয়েন্ট সংযুক্তকারী প্রদত্ত) পূর্ণসংখ্যার এই উপস্থাপনের সাথে ধ্রুবক-সময় ক্রিয়াকলাপের বাইরে কিছু প্রকাশ করা শক্ত। অতএব, আপনাকে এখনও পুনরাবৃত্তির জন্য চার্চ সংখ্যাগুলি ব্যবহার করতে হবে (অর্থাত্ লুপগুলির ), যা ব্যবহার করে আপনি হালকা লজিকের মৌলিক (যা তাদের জটিলতার বৈশিষ্ট্য দেয়): আপনি কোনওটি পুনরাবৃত্তি করতে পারবেন না ক্রিয়াকলাপ যা নিজেই পুনরাবৃত্তি দ্বারা সংজ্ঞায়িত হয়েছে ( এখানে চার্চ পূর্ণসংখ্যার প্রকার)।forNat→NatNat

একটি উদাহরণ: কিছু "চার্চ পূর্ণসংখ্যার হ্যাকিং" এর সাথে EAL যেমন পুনরাবৃত্তি না ব্যবহার করে । তারপরে, আপনি ফাংশন সংজ্ঞায়িত করতে করতে পারেন যা যাইহোক, নিজেই পুনরাবৃত্তি হতে পারে না । সুতরাং EAL ভিত্তিক প্রোগ্রামিং ভাষা যাই হোক না কেন পুনরাবৃত্তি দ্বারা নির্দিষ্ট সংজ্ঞা নিষিদ্ধ করার একধরণের প্রক্রিয়া থাকা প্রয়োজন; এ জাতীয় নিষেধাজ্ঞার ফলশ্রুতিতে প্রোগ্রামারটির কাছে কী এমন উদ্বেগ বোধ হয় এমন কোনও ভাষার ফলে কীভাবে প্রভাব ফেলবে না তা কল্পনা করা শক্ত। যাইহোক, কেউ আপনাকে চেষ্টা করতে এবং আপনি কী পেতে পারেন তা দেখতে নিষেধ করে!dbl:Nat→Natdbl n_=2n_ dblexp

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

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