নির্ভরশীল প্রকারগুলি বনাম পরিশোধিত প্রকারের


57

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

যদি এটি সহায়তা করে তবে আমি তরল হাস্কেল প্রকল্পের মাধ্যমে পরিমার্জিত প্রকারগুলি এবং কক এবং আগদার মাধ্যমে নির্ভরশীল প্রকারগুলি পেয়েছি। এটি বলেছিল, আমি তত্ত্বগুলি কীভাবে পৃথক হয় তার একটি ব্যাখ্যা খুঁজছি।

উত্তর:


33

মূল পার্থক্য দুটি মাত্রা সহ - অন্তর্নিহিত তত্ত্বে এবং সেগুলি কীভাবে ব্যবহার করা যায় তা। কেবল পরেরটির উপর ফোকাস করা যাক।

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

http://ucsd-progsys.github.io/lh-workshop/04-case-study-insertsort.html#/ordered-lists

বনাম ইদ্রিসে

https://github.com/davidfstr/idris-insertion-sort/blob/master/InsertionSort.idr

তবে অটোমেশনটি একটি দামে আসে। সম্পূর্ণ নির্ভরশীল বিশ্বে যে কেউ যেমন করতে পারে তেমন স্পেসিফিকেশন হিসাবে সালিসী ফাংশন ব্যবহার করতে পারে না, যা কোনও ব্যক্তির লিখতে পারে এমন শ্রেণীর সম্পত্তিকে সীমাবদ্ধ করে।

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


পরিশোধিত প্রকার ভিত্তিক স্পেসিফিকেশন থেকে নির্ভরশীল টাইপ ভিত্তিক স্পেসিফিকেশন থেকে কোনওভাবে যান্ত্রিকভাবে ম্যাপ করার কোনও উপায় আছে কি? নাকি এ জাতীয় "আইসোমরফিজম" এখনও পর্যাপ্ত অধ্যয়ন করা হয়নি?
এরিক অলিক

1
এএফআইকে এই জাতীয় "আইসোমরফিজম" খুব বেশি পড়াশোনা করা হয়নি। যদিও সাম্প্রতিক কিছু কাজ রয়েছে, দেখুন: লেহম্যান এবং ট্যান্টারের "কোকায় সরল পরিমার্জন প্রকারের গঠন আনুষ্ঠানিকভাবে" (যা শীঘ্রই উপস্থিত হবে ... এখানে একটি জিএইচ রেপো রয়েছে: github.com/pleiad/Rifinements )
রঞ্জিত ঝালা

স্কালায় পথ-নির্ভর ধরণের সম্পর্কে কীভাবে?
ইয়াং বো

1
@ রঞ্জিতঝালা আমার মনে হয় আপনি ভুলক্রমে চূড়ান্ত অনুচ্ছেদে আপনার লক্ষ্যগুলি পেয়েছেন?
নলডোরিন

1
@ নলডোরিন আমি বলব রঞ্জিত ঠিক তার শেষ অনুচ্ছেদটি পেয়েছে got "পরিশোধন প্রকার ... সিদ্ধান্ত গ্রহণযোগ্য টুকরোতে সীমাবদ্ধ যাতে ভেরিফিকেশন (এবং অনুমান) সম্পূর্ণরূপে স্বয়ংক্রিয়" বনাম "প্রমাণ শর্তাবলী ... ... নির্ভরশীল [প্রকারের]" তে প্রয়োজনীয়। এইভাবে পরিশোধক প্রকারে কাজ করা লোকেরা নিজেকে পরিশোধিত / যাচাইযোগ্য হওয়ার পরেও পরিশোধনকারী ধরণে কত নির্দিষ্ট করা যায় তা প্রসারিত করার চেষ্টা করছে, যখন নির্ভরশীল প্রকারে কাজ করা ব্যক্তিরা প্রমাণ শর্তাদির উত্সকে স্বয়ংক্রিয় করার চেষ্টা করছেন।
রায়ফ

22

TPT

{v:TP(v)}
T

{x:T1T2P}

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

[1] http://goto.ucsd.edu/~rjhala/liquid/liquid_types.pdf


1
সিগমাটি চার্চের মতো এনকোডিং ব্যবহার করে পাই দিয়ে এনকোড করা যায় তবে আফিক তরল হ্যাস্কেলের পরিশোধন ফাংশনগুলি পাই (নির্ভরশীল ফাংশন) ধরণের নয়।
fread2281

15

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


3
একটি কি অন্যটির উপসেট? পরিশোধন প্রকারগুলি এসএমটি ব্যবহার করে সমাধানযোগ্য বলে মনে হয় তবে নির্ভরশীল ধরণেরগুলির জন্য আপনার নিজের প্রমাণের শর্তাদি দরকার ...
jmite

4
"একটি কি অন্যটির উপসেট?" না। তাই আমি একটি পরিমার্জন প্রকারের উদাহরণ দিয়েছি যা নির্ভরশীল নয় এবং নির্ভরশীল প্রকার যা কোনও পরিশোধন নয়।
আলেক্সি রোমানভ

8
সিগমার সাথে পরিশোধন প্রকারগুলি এনকোড করা যাবে না?
fread2281

3
আপনার উদাহরণটি আপনার বক্তব্যটি প্রদর্শন করে না বলে মনে হচ্ছে। ধনাত্মক সংখ্যাগুলি 0 এর চেয়ে বেশি সংখ্যার হিসাবে সংজ্ঞায়িত করা হয় এর অর্থ কি এই নয় যে "ধনাত্মক সংখ্যার প্রকার" অবিকল "সমস্ত সংখ্যার চেয়ে বড় 0"?
আকদম

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