কারি-হাওয়ার্ড আইসোমরফিজম থেকে উত্সাহিত সবচেয়ে আকর্ষণীয় সমতুল্য কি কি?


98

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

program/definition        | proof
type/declaration          | proposition
inhabited type            | theorem/lemma
function                  | implication
function argument         | hypothesis/antecedent
function result           | conclusion/consequent
function application      | modus ponens
recursion                 | induction
identity function         | tautology
non-terminating function  | absurdity/contradiction
tuple                     | conjunction (and)
disjoint union            | disjunction (or)          -- corrected by Antal S-Z
parametric polymorphism   | universal quantification

সুতরাং, আমার প্রশ্নের কাছে: এই আইসোমরফিজমের আরও কিছু আকর্ষণীয় / অস্পষ্ট প্রভাবগুলি কী কী? আমি কোনও লজিস্টিয়ান না তাই আমি নিশ্চিত যে আমি কেবল এই তালিকার সাথে পৃষ্ঠটি স্ক্র্যাচ করেছি।

উদাহরণস্বরূপ, এখানে কিছু প্রোগ্রামিং ধারণা রয়েছে যার জন্য আমি যুক্তিতে পিত্তির নামগুলি সম্পর্কে অবগত নই:

currying                  | "((a & b) => c) iff (a => (b => c))"
scope                     | "known theory + hypotheses"

এবং এখানে কিছু যৌক্তিক ধারণা দেওয়া আছে যা আমি প্রোগ্রামিংয়ের ক্ষেত্রে যথেষ্ট পিন করি নি:

primitive type?           | axiom
set of valid programs?    | theory

সম্পাদনা করুন:

প্রতিক্রিয়া থেকে সংগ্রহ করা আরও কিছু সমতা এখানে:

function composition      | syllogism                -- from Apocalisp
continuation-passing      | double negation          -- from camccann

সমাপ্তি ~ =
অ্যাক্সিয়মের

+1 এই প্রশ্ন এবং সমস্ত মানের উত্তর এবং মন্তব্যগুলি CHI- এ আমি ইন্টারনেটের মাধ্যমে যা শিখতে পারি তার চেয়ে বেশি শিখিয়েছে।
আলেকজান্দ্রি সি

25
@ পল নাথান:goto | jumping to conclusions
জো অ্যাডামস

আমি মনে করি সমস্ত বৈধ প্রোগ্রামগুলির সেটটি একটি মডেল হবে
ড্যানিল

4
fst / snd | সংযোগ বিলোপ, বাম / ডান | বিভাজন ভূমিকা
টনি মরিস

উত্তর:


34

যেহেতু আপনি স্পষ্টভাবে সবচেয়ে আকর্ষণীয় এবং অস্পষ্ট বিষয়গুলির জন্য বলেছেন:

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

evaluation             | proof normalisation/cut-elimination
variable               | assumption
S K combinators        | axiomatic formulation of logic   
pattern matching       | left-sequent rules 
subtyping              | implicit entailment (not reflected in expressions)
intersection types     | implicit conjunction
union types            | implicit disjunction
open code              | temporal next
closed code            | necessity
effects                | possibility
reachable state        | possible world
monadic metalanguage   | lax logic
non-termination        | truth in an unobservable possible world
distributed programs   | modal logic S5/Hybrid logic
meta variables         | modal assumptions
explicit substitutions | contextual modal necessity
pi-calculus            | linear logic

সম্পাদনা: আমি সিএফ এর এক্সটেনশানগুলি সম্পর্কে আরও জানতে আগ্রহী যে কাউকে সুপারিশ করব:

"মডেল লজিকের একটি বিচারিক পুনর্গঠন" http://www.cs.cmu.edu/~fp/papers/mscs00.pdf - এটি শুরু করার জন্য দুর্দান্ত জায়গা কারণ এটি প্রথম নীতিগুলি থেকে শুরু হয় এবং এর বেশিরভাগ অংশ লক্ষ্য করা যায় অ-লজিস্টিয়ান / ভাষা তাত্ত্বিকদের কাছে অ্যাক্সেসযোগ্য। (যদিও আমি দ্বিতীয় লেখক, তাই আমি পক্ষপাতদুষ্ট))


কিছু কম তুচ্ছ উদাহরণ দেওয়ার জন্য ধন্যবাদ (এটি আসলেই মূল প্রশ্নের চেতনা ছিল), যদিও আমি স্বীকার করি যে এর মধ্যে বেশিরভাগই আমার মাথার উপরে রয়েছে ... যুক্তিটিতে "প্রয়োজনীয়তা" এবং "সম্ভাবনা" শব্দটি কি সংজ্ঞায়িতভাবে সংজ্ঞায়িত করা হয়েছে? তারা তাদের গণনার সমতুল্যে কীভাবে অনুবাদ করে?
টম ক্রকেট

4
আমি এগুলির প্রত্যেকের জন্য প্রকাশিত কাগজপত্রগুলিতে ইঙ্গিত করতে পারি, তাই সেগুলি সুনির্দিষ্টভাবে সংজ্ঞায়িত করা হয়েছে। মডেল লজিক অনেক বেশি অধ্যয়ন করা হয় (যেহেতু অ্যারিস্টটল) সত্যের বিভিন্ন পদ্ধতিগুলি সম্পর্কিত - "এ সম্ভাব্য সত্য" এর অর্থ "প্রতিটি সম্ভাব্য পৃথিবীতে এ সত্য", যখন "এ সম্ভবত সত্য" এর অর্থ "একটি সম্ভাব্য বিশ্বে সত্য সত্য" । আপনি "(অগত্যা (এ -> বি) এবং সম্ভবত এ) -> সম্ভবত বি" এর মতো জিনিসগুলি প্রমাণ করতে পারেন। মডেল ইনফারেন্স বিধিগুলি সিএইচ-তে যথারীতি সরাসরি অভিব্যক্তি রচনা, টাইপিং এবং হ্রাস বিধি দেয়। দেখুন: en.wikipedia.org/wiki/Modal_logic এবং cs.cmu.edu/~fp/papers/mscs00.pdf
RD1

4
@ পেলোটম: আপনি অন্যান্য ধরণের যুক্তি সম্পর্কে কিছুটা পড়তে চাইতে পারেন । প্লেইন শাস্ত্রীয় যুক্তি প্রায়ই এই প্রেক্ষাপটে দরকারী নয় - আমি আমার উত্তর intuitionistic যুক্তিবিজ্ঞান উল্লেখ করা হয়েছে, কিন্তু মোডাল এবং রৈখিক যুক্তিবিজ্ঞান হয় এমনকি "weirder", কিন্তু সত্যিই সন্ত্রস্ত।
সিএ ম্যাকক্যান

4
পয়েন্টারগুলির জন্য ধন্যবাদ, মনে হচ্ছে আমার কিছু পড়ার আছে!
টম ক্রকেট

4
@ আরডি 1: আপনারা এটিকে খারাপ বলে মনে করেন, আমি হাস্কেলের মধ্যে এতটা চিন্তাভাবনা করে সময় কাটিয়েছি যে সেগুলি বোঝার আগে আমাকে প্রাকটিক যুক্তির সূত্রগুলি টাইপ স্বাক্ষরগুলিতে মানসিকভাবে অনুবাদ করতে হয়েছিল। :( বাদ দেওয়া মাঝারি এবং এই জাতীয় আইনটি সত্যিই বিভ্রান্তিকর এবং সম্ভবত সন্দেহজনক বলে মনে হয় তা উল্লেখ করার জন্য নয়
সিএ ম্যাকক্যান

26

নির্বিঘ্নের বিষয়ে আপনি কিছুটা কাদামাটি করছেন। মিথ্যা দ্বারা প্রতিনিধিত্ব করা হয় জনবসতিহীন ধরনের , যা সংজ্ঞা দ্বারা অ সসীম কারণ যে ধরনের প্রথম স্থানে নির্ণয় করা কিছুই হতে পারে না।

অ-সমাপ্তি বৈপরীত্যের প্রতিনিধিত্ব করে - অস্বস্তিকর যুক্তি। একটি বেমানান যুক্তি অবশ্যই আপনাকে মিথ্যাচার সহ কিছু প্রমাণ করার অনুমতি দেবে

অসঙ্গতি উপেক্ষা টাইপ সিস্টেম সাধারণত একটি মিলা intuitionistic যুক্তিবিজ্ঞান এবং প্রয়োজনীয়তা দ্বারা হয় constructivist , যা সব সময়ে যদি শাস্ত্রীয় যুক্তি নির্দিষ্ট টুকরা, সরাসরি প্রকাশ করা যাবে না মানে। অন্যদিকে এটি দরকারী, কারণ কোনও প্রকার যদি বৈধ গঠনমূলক প্রমাণ হয়, তবে সেই ধরণের একটি শব্দটি যা আপনি তার অস্তিত্ব প্রমাণ করেছেন তা নির্মানের একটি উপায়

গঠনবাদী গন্ধের একটি প্রধান বৈশিষ্ট্য হ'ল ডাবল অস্বীকৃতি অ-অবহেলার সমান নয়। প্রকৃতপক্ষে, টাইপ সিস্টেমে অবহেলা খুব কমই একটি আদিম, সুতরাং পরিবর্তে আমরা এটিকে অন্তর্নিহিত মিথ্যা হিসাবে উপস্থাপন করতে পারি, যেমন, not Pহয়ে যায় P -> Falsity। দ্বিগুণ প্রত্যাখ্যান এইভাবে টাইপযুক্ত একটি ফাংশন হবে (P -> Falsity) -> Falsity, যা পরিষ্কারভাবে কেবল টাইপের কোনও কিছুর সমতুল্য নয় P

তবে এটিতে একটি আকর্ষণীয় মোড় আছে! প্যারাম্যাট্রিক পলিমারফিজম সহ একটি ভাষায়, টাইপ ভেরিয়েবলগুলি অনাবৃতদের সহ সমস্ত সম্ভাব্য প্রকারের মধ্যে বিস্তৃত হয়, সুতরাং একটি সম্পূর্ণ পলিমর্ফিক টাইপ যেমন ∀a. aকোনও দিক থেকে প্রায় মিথ্যা false সুতরাং যদি আমরা বহুবচন ব্যবহার করে দ্বিগুণ-অবহেলা লিখি? আমরা একটি টাইপ সৌন্দর্য এটি পছন্দ যে পাবেন: ∀a. (P -> a) -> a। এটি কি ধরণের কিছু সমতুল্য P? প্রকৃতপক্ষে এটি কেবল পরিচয় ফাংশনে প্রয়োগ করুন।

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


সংশোধনের জন্য ধন্যবাদ, আমি "মিথ্যাচার" অপসারণের প্রতিশব্দ হিসাবে মুছে ফেলেছি। ডাবল-নেগ্রেশনের জন্য +1 <=> সিপিএস!
টম ক্রকেট

আমি ¬p হিসাবে প্রতিনিধিত্ব করার পিছনে অন্তর্দৃষ্টি বেশিরভাগই পাই না P -> Falsity। আমি বুঝতে পারি কেন এটি কাজ করে (¬p ≡ p → ⊥), তবে আমি কোড সংস্করণ পাই না। ঠিক নেই, ঠিক P -> ⊥তখন বসবাস করা উচিত P? তবে এই ফাংশনটি কি সর্বদা বসবাস করা উচিত নয়? বা সম্ভব কখনও না, আসলে, যেহেতু আপনি কোনও উদাহরণ ফিরে দিতে পারবেন না ? আমি এর শর্তটি বেশ দেখতে পাই না। এখানে অন্তর্নিহিত কি?
এন্টাল স্পেক্টর-জাবুসকি

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

4
@ আন্টাল এসজেড: অন্যদিকে, সমতুল্য যুক্তি যদি সামঞ্জস্য হয় তবে সমস্ত ফাংশন অবশ্যই মোট হতে হবে, উদাহরণস্বরূপ, সমস্ত প্যাটার্নের মিলটি অবশ্যই পরিপূর্ণ হবে। সুতরাং কোনও নিদর্শন ছাড়াই কোনও ফাংশন লিখতে, প্যারামিটারের ধরণের কোনও কনস্ট্রাক্টর থাকতে হবে না, যেমন, জনশূন্য হতে হবে। অতএব, এই জাতীয় ফাংশন আইনী হবে - এবং এইভাবে তার নিজস্ব ধরণের বসতি থাকে - অবিকল এবং কেবল তখনই যখন তার যুক্তিটি জনবসতিহীন হয়। সুতরাং, একটি ফাংশন মিথ্যা হওয়ার P -> Falsityসমতুল্য P
সিএ ম্যাকক্যান

আহা, আমি মনে করি এটি পেয়েছি। আমি যে সংস্করণটি বিনোদন দিয়েছিলাম তা হ'ল এমন কিছু f x = x, যা তাৎক্ষণিক iff হতে পারে P = ⊥তবে এটি স্পষ্টতই জেনেরিক ছিল না। সুতরাং ধারণাটি হ'ল মূল্যহীন প্রকারটি ফিরিয়ে দিতে আপনার কোনও শরীরের প্রয়োজন নেই; তবে ফাংশনটি সুনির্দিষ্ট ও মোটামুটিভাবে হওয়ার জন্য আপনার কোনও মামলা দরকার নেই , এবং তাই যদি Pজনশূন্য হয়, তবে সমস্ত কিছু কার্যকর হয়? এটি কিছুটা দুর্বল, তবে আমি মনে করি এটি আমি দেখেছি। এটি আমার Xorধরণের সংজ্ঞাটির সাথে অদ্ভুতভাবে ইন্টারঅ্যাক্ট করে বলে মনে হচ্ছে ... আমাকে সে সম্পর্কে ভাবতে হবে। ধন্যবাদ!
এন্টাল স্পেক্টর-জাবুস্কি

15

আপনার চার্টটি ঠিক ঠিক নয়; অনেক ক্ষেত্রে শর্তাদির সাথে আপনার বিভ্রান্ত প্রকার রয়েছে।

function type              implication
function                   proof of implication
function argument          proof of hypothesis
function result            proof of conclusion
function application RULE  modus ponens
recursion                  n/a [1]
structural induction       fold (foldr for lists)
mathematical induction     fold for naturals (data N = Z | S N)
identity function          proof of A -> A, for all A
non-terminating function   n/a [2]
tuple                      normal proof of conjunction
sum                        disjunction
n/a [3]                    first-order universal quantification
parametric polymorphism    second-order universal quantification
currying                   (A,B) -> C -||- A -> (B -> C), for all A,B,C
primitive type             axiom
types of typeable terms    theory
function composition       syllogism
substitution               cut rule
value                      normal proof

[1] টিউরিং-সম্পূর্ণ কার্যকরী ভাষার পক্ষে যুক্তি অসঙ্গত। ধারাবাহিক তত্ত্বগুলিতে পুনরাবৃত্তির কোনও যোগাযোগ নেই। অসামঞ্জস্যপূর্ণ যুক্তি / আনসাউন্ড প্রুফ তত্ত্বে আপনি এটিকে একটি বিধি হিসাবে অভিহিত করতে পারেন যা অসঙ্গতি / আনসোসনেসির কারণ হয়।

[২] আবারও এটি সম্পূর্ণতার পরিণতি। যুক্তিটি যদি সামঞ্জস্যপূর্ণ হয় তবে এটি অ্যান্টি-তত্ত্বের প্রমাণ হবে - সুতরাং এটি বিদ্যমান থাকতে পারে না।

[3] কার্যকরী ভাষায় অস্তিত্ব নেই, যেহেতু তারা প্রথম-অর্ডের লজিকাল বৈশিষ্ট্যগুলি মেনে চলে: সমস্ত সূত্রপাত এবং প্যারামিট্রাইজেশন সূত্র ধরে সম্পন্ন হয়। আপনাকে প্রথমে-অর্ডার বৈশিষ্ট্য ছিল, তাহলে চেয়ে এক ধরনের অন্যান্য হবে *, * -> *ইত্যাদি .; বক্তৃতা ডোমেনের উপাদানগুলির ধরণ। উদাহরণস্বরূপ, মধ্যে Father(X,Y) :- Parent(X,Y), Male(X), Xএবং Yবক্তৃতা (এটা কল ডোমেইনের উপর পরিসীমা Dom), এবং Male :: Dom -> *


[1] - হ্যাঁ, আমার আরও নির্দিষ্ট হওয়া উচিত ছিল। আমি "কাঠামোগত পুনরাবৃত্তি" বলতে চাইছিলাম অবিচ্ছিন্ন পুনরাবৃত্তির চেয়ে, যা আমার ধারণা "ভাঁজ" এর সমান। [3] - নির্ভরশীল-টাইপযুক্ত ভাষায় এটি বিদ্যমান
টম ক্রকেট

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

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


13

আমি এই প্রশ্নটি সত্যিই পছন্দ করি। আমি পুরোটা জানি না, তবে আমার কাছে কয়েকটি জিনিস রয়েছে ( উইকিপিডিয়া নিবন্ধ দ্বারা সহায়ক , যার কয়েকটি ঝরঝরে টেবিল রয়েছে এবং এটি নিজেই রয়েছে):

  1. আমি মনে করি যে যোগফল / ইউনিয়ন প্রকারগুলি ( উদাঃ data Either a b = Left a | Right b ) সমেত বিযুক্তির সমতুল্য । এবং, যদিও আমি কারি-হাওয়ার্ডের সাথে খুব ভালভাবে পরিচিত নই, তবে আমি মনে করি এটি এটি প্রদর্শন করে। নিম্নলিখিত ফাংশন বিবেচনা করুন:

    andImpliesOr :: (a,b) -> Either a b
    andImpliesOr (a,_) = Left a
    

    আমি যদি জিনিসগুলি সঠিকভাবে বুঝতে পারি তবে প্রকারটি বলে যে ( a  ∧  b ) → ( a  ★  b ) এবং সংজ্ঞাটি বলে যে এটি সত্য, যেখানে either হয় অন্তর্ভুক্তি বা একচেটিয়া বা, যে কোনও Eitherপ্রতিনিধিত্ব করে। আপনি Eitherএকচেটিয়া প্রতিনিধিত্ব করেন বা, ⊕; তবে, ( a  ∧  b ) ↛ ( a  ⊕  b )। উদাহরণস্বরূপ, ⊤ ∧ ⊤ ≡ ⊤, তবে ⊤ ⊕ ⊥ ≡ ⊥, এবং ⊤ ↛ ⊥ ⊥ অন্য কথায়, যদি এবং উভয়ই সত্য হয়, তবে অনুমানটি সত্য তবে উপসংহারটি মিথ্যা, এবং সুতরাং এই নিদর্শনটি অবশ্যই মিথ্যা। তবে, স্পষ্টভাবে, ( a  ∧  b ) a ( a  ∨ ) ∨  ), যেহেতু এবং উভয়ই সত্য, তবে কমপক্ষে একটি সত্য। সুতরাং, যদি বৈষম্যমূলক ইউনিয়নগুলি কিছুটা বিযুক্তির আকার হয় তবে তাদের অবশ্যই অন্তর্ভুক্ত বৈচিত্র্য variety আমি মনে করি এটি একটি প্রমাণ হিসাবে ধরে রেখেছে, তবে এই ধারণাটি আমাকে নিষ্ক্রিয় করতে মুক্ত মনে হবে।

  2. একইভাবে, পরিচয় ফাংশন এবং নন-টার্মিনেটিং ফাংশন হিসাবে যথাক্রমে টাউটোলজি এবং অযৌক্তিকতার জন্য আপনার সংজ্ঞাগুলি কিছুটা বন্ধ। প্রকৃত সূত্রটি ইউনিট প্রকারের দ্বারা প্রতিনিধিত্ব করা হয় , যা সেই ধরণের যেখানে কেবল একটি উপাদান থাকে ( data ⊤ = ⊤; প্রায়শই বানান ()এবং / অথবা Unitকার্যকরী প্রোগ্রামিং ভাষায়)। এটি উপলব্ধি করে: যেহেতু এই ধরণের আবাসনের গ্যারান্টিযুক্ত , এবং যেহেতু কেবলমাত্র একমাত্র সম্ভাব্য বাসিন্দা রয়েছে তাই এটি অবশ্যই সত্য। পরিচয় ফাংশন কেবল নির্দিষ্ট টোটোলজির প্রতিনিধিত্ব করে যা a  →  a

    অবসানহীন ফাংশন সম্পর্কে আপনার মন্তব্য হ'ল আপনি কী বোঝাতে চেয়েছিলেন তার উপর নির্ভর করে আরও বন্ধ। টাইপ সিস্টেমে কারি-হাওয়ার্ড ফাংশন করে তবে অ-সমাপ্তি সেখানে এনকোড থাকে না। মতে উইকিপিডিয়া , অ-সমাপ্ত সঙ্গে তার আচরণ একটি বিষয় যোগ যেমন অসঙ্গত ন্যায়শাস্ত্র উত্পাদন করে আছে ( যেমন , আমি বর্ণনা করতে পারেন wrong :: a -> bদ্বারা wrong x = wrong x, এবং এইভাবে "প্রমাণ" যে একটি  →  কোন একটি এবং )। যদি আপনি এই শব্দটিকে "অযৌক্তিকতা" দ্বারা বোঝাতে চান তবে আপনি ঠিক সঠিক। পরিবর্তে যদি আপনি মিথ্যা বক্তব্য বোঝাতে চান, তবে আপনি তার পরিবর্তে যা চান তা হ'ল যে কোনও নির্বাসিত প্রকার, যেমন কোনও কিছু দ্বারা সংজ্ঞায়িতdata ⊥এটি হ'ল এটি কোনও উপায়ে এটি নির্মাণের কোনও উপায় ছাড়াই। এটি নিশ্চিত করে যে এর কোনও মূল্য নেই এবং তাই এটি অবশ্যই জনশূন্য হতে হবে যা মিথ্যা সমান। আমি মনে করি আপনি সম্ভবত এটিও ব্যবহার করতে পারেন a -> b, যেহেতু আমরা যদি অবসানহীন ফাংশনগুলি নিষিদ্ধ করি, তবে এটিও জনহীন, তবে আমি 100% নিশ্চিত নই।

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

  4. আমার যুক্তি এবং শব্দার্থবিজ্ঞানের শ্রেণি অনুসারে, ( a  ∧  b ) →  c  ≡  a  → ( b  →  c ) (এবং সেই সাথে b a  ( a  →  c )) কেও রফতানির সমতা আইন বলা হয়, কমপক্ষে প্রাকৃতিক ছাড় প্রমাণ। আমি তখন খেয়াল করিনি যে এটি কেবল কারি হচ্ছে — আমার ইচ্ছা যদি আমার থাকত, কারণ এটি দুর্দান্ত!

  5. যদিও এখন আমাদের কাছে অন্তর্ভুক্তিক বিযুক্তিকে উপস্থাপন করার একটি উপায় রয়েছে , আমাদের কাছে একচেটিয়া বিভিন্ন উপস্থাপন করার উপায় নেই। এটি উপস্থাপনের জন্য আমাদের একচেটিয়া সংশ্লেষের সংজ্ঞাটি ব্যবহার করতে সক্ষম হওয়া উচিত: a  ⊕  b  ≡ ( a  ∨  b ) ∧ ¬ ( a  ∧  b )। আমি কীভাবে প্রত্যাখ্যান লিখতে জানি না, তবে আমি জানি যে ¬ p  ≡  p  → ⊥, এবং জড়িত এবং মিথ্যা উভয়ই সহজ। আমাদের এইভাবে একচেটিয়া বিযুক্তিকে উপস্থাপন করতে সক্ষম হওয়া উচিত:

    data ⊥
    data Xor a b = Xor (Either a b) ((a,b) -> ⊥)
    

    এটি কোনও মান ছাড়াই খালি প্রকার হিসাবে সংজ্ঞায়িত হয় যা মিথ্যাচারের সাথে মিলে যায়; Xorতারপর রয়েছে বলে সংজ্ঞায়িত করা হয় উভয় ( এবং ) Eitherএকটি একটি বা বো ( বা ) এবং একটি ফাংশন ( সংশ্লেষ থেকে) (ক, খ) ( এবং ) নীচে প্রকার (থেকে মিথ্যা )। তবে এর অর্থ কী তা আমার কোনও ধারণা নেই । ( সম্পাদনা 1: এখন আমি করি, পরবর্তী অনুচ্ছেদটি দেখুন!) যেহেতু ধরণের কোনও মান নেই (a,b) -> ⊥(সেখানে আছে?) তাই কোনও প্রোগ্রামে এর অর্থ কী তা আমি বুঝতে পারি না। এই সংজ্ঞা বা অন্য কোনওটি সম্পর্কে চিন্তা করার আরও ভাল উপায় কি কেউ জানেন? ( সম্পাদনা 1: হ্যাঁ, ক্যামক্যান ।)

    সম্পাদনা 1: ক্যামক্যানের উত্তরের জন্য ধন্যবাদ (আরও বিশেষত, তিনি আমাকে সাহায্য করার জন্য তিনি যে মন্তব্যগুলি রেখেছিলেন), আমি মনে করি আমি এখানে কী ঘটছে তা দেখেছি। প্রকারের মান তৈরি Xor a bকরতে আপনাকে দুটি জিনিস সরবরাহ করতে হবে। প্রথমত, উভয়েরই উপাদান aবা bপ্রথম যুক্তি হিসাবে অস্তিত্বের সাক্ষী ; যে, একটি Left aবা একটি Right b। এবং দ্বিতীয়ত, একটি প্রমাণ যা উভয় প্রকারের aএবং bঅন্য শব্দের উপাদান নেই , একটি প্রমাণ যা (a,b)নির্জন নয় the দ্বিতীয় যুক্তি হিসাবে। যেহেতু আপনি শুধুমাত্র থেকে একটি ফাংশন লিখতে সক্ষম হবেন (a,b) -> ⊥যদি (a,b)জনবিরল, এটা কি মানে ক্ষেত্রে হতে জন্য? এর অর্থ হ'ল কিছু ধরণের অবজেক্টের কিছু অংশ(a,b)নির্মাণ করা যায়নি; অন্য কথায়, যে কমপক্ষে একটি, এবং সম্ভবত উভয়ই, aএবং bপাশাপাশি জনহীন! এই ক্ষেত্রে, আমরা যদি প্যাটার্ন ম্যাচিংয়ের কথা ভাবছি তবে আপনি সম্ভবত এ জাতীয় টিপলের সাথে প্যাটার্ন-ম্যাচ করতে পারবেন না: ধরুন যে bজনবসতিহীন, আমরা কী লিখব যে সেই টিপলের দ্বিতীয় অংশের সাথে মেলে? সুতরাং, আমরা এর বিপরীতে প্যাটার্নটি মেলতে পারি না, এটি আপনাকে এটি কেন নির্জন করে তোলে তা দেখতে সহায়তা করতে পারে। এখন, মোট ক্রিয়াকলাপের একমাত্র উপায় যা কোনও আর্গুমেন্ট গ্রহণ করে না (যেমন এটি (a,b)নির্ধারিতভাবে নির্বাসিত) ফলাফলটিও জনবসতিহীন ধরণের হতে পারে - যদি আমরা এটির সাথে প্যাটার্ন-মিলের দৃষ্টিকোণ থেকে চিন্তা করি, এর অর্থ এই যে ফাংশনে কোনও মামলা না থাকলেও কোনও সম্ভাব্য শরীর নেই এটি হয়, এবং তাই সবকিছু ঠিক আছে পারে।

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


4
হয় অন্তর্ভুক্ত-বা। মনে রাখবেন (হয় এএ) একটি উপপাদ্য (সকলের জন্য)।
অ্যাপোক্যালিস্প

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

4
নীচে প্রমাণ হয় না। "অজ্ঞাত এবং অনির্দিষ্টকে ধারণ করা এবং নির্ধারণ করা অনুমান করা অবাস্তব এবং অসম্ভব।" - এরিস্টোটেলস
অ্যাপোক্যালিস্প

4
@ টম: কেবল অ-অবসান সম্পর্কে পয়েন্টটি বাড়িতে চালানোর জন্য, যদি যুক্তি সঙ্গতিপূর্ণ হয় তবে সমস্ত প্রোগ্রাম সমাপ্ত হবে । অ-সমাপ্তি কেবলমাত্র সেই ধরণের সিস্টেমে ঘটে যা বেমানান লজিকগুলি উপস্থাপন করে বা সমতুল্যভাবে, টুরিং-সম্পূর্ণ ভাষার জন্য সিস্টেম টাইপ করে।
সিএ ম্যাকক্যান

4
অ্যাপোক্যালিস্প: Either a a একেবারে উপপাদ্য হওয়া উচিত নয়: Either ⊥ ⊥এটি এখনও জনহীনটম: ক্যামক্যান যেমন বলেছিল, ধারাবাহিকতা সমাপ্তি বোঝায়। সুতরাং, একটি সামঞ্জস্যপূর্ণ টাইপ সিস্টেম আপনাকে প্রকাশ করার অনুমতি দেয় না f :: a -> b, এবং সুতরাং টাইপটি জনবসতিযুক্ত হবে; একটি অসঙ্গত টাইপ সিস্টেম হবে টাইপ জন্য বাসিন্দা আছে, কিন্তু এক যে বিনষ্ট না। ক্যামক্যান: এখানে কি অসামঞ্জস্যপূর্ণ টাইপ সিস্টেম রয়েছে যা টিউরিং -সম্পূর্ণ নয়, শ্রেণিবিন্যাসের কিছুটা অভ্যন্তরীণ পয়েন্ট দখল করে আছে? বা সেই শেষ পদক্ষেপটি (সাধারণ পুনরাবৃত্তি যোগ করা বা যাই হোক না কেন) অসঙ্গতির সাথে ঠিক সমান?
এন্টাল স্পেক্টর-জাবুসকি

12

এখানে কিছুটা অস্পষ্ট যা আমি অবাক করে দিয়েছি তা আগে উত্থাপিত হয়নি: "ক্লাসিকাল" ক্রিয়ামূলক প্রতিক্রিয়াশীল প্রোগ্রামিং অস্থায়ী যুক্তির সাথে মিলে যায়।

অবশ্যই আপনি যদি কোনও দার্শনিক, গণিতবিদ বা অবসেসিভ ফাংশনাল প্রোগ্রামার না হন তবে সম্ভবত এটি আরও বেশ কয়েকটি প্রশ্ন নিয়ে আসে।

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

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

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

এবং অস্থায়ী যুক্তি কি? যথাযথভাবে যথেষ্ট, এটি সময়ের সাথে পরিমিত পরিমাণে প্রস্তাবগুলি মোকাবেলার জন্য যৌক্তিক নিয়মের একটি সেট। মূলত, এটি দুটি কোয়ানটিফায়ার সহ প্রথম প্রথম-ক্রমের যুক্তিকে প্রসারিত করে: □ এবং ◇ ◇ প্রথম অর্থ "সর্বদা": পড়ুন □ φ হিসাবে "φ সর্বদা হোল্ড"। দ্বিতীয়টি হ'ল "শেষ পর্যন্ত": ◇ φ এর অর্থ হল "eventually অবশেষে ধরে রাখা হবে"। এটি একটি বিশেষ ধরণের মডেল লজিক । নিম্নলিখিত দুটি আইন কোয়ান্টিফায়ার সম্পর্কিত:

□φ ⇔ ¬◇¬φ
◇φ ⇔ ¬□¬φ

সুতরাং □ এবং ◇ একই সাথে একে অপরের সাথে দ্বৈত ∀ এবং ∃ ∃

এই দুটি কোয়ানটিফায়ার এফআরপিতে দুটি ধরণের সাথে মিলে যায়। বিশেষত, beha আচরণের সাথে মিলে যায় এবং ◇ ইভেন্টের সাথে মিল। যদি আমরা এই ধরণের জনবসতি সম্পর্কে চিন্তা করি তবে এটির অর্থ হওয়া উচিত: একটি আচরণ প্রতিটি সম্ভাব্য সময়ে বসানো হয় , যখন একটি ইভেন্ট কেবল একবার ঘটে।


8

ধারাবাহিকতা এবং দ্বিগুণ প্রত্যাখ্যানের মধ্যে সম্পর্কের সাথে সম্পর্কিত, কল / সিসির ধরণ হ'ল পিয়ার্সের আইন http://en.wikedia.org/wiki/Call-with-current-continuation

সিএইচ সাধারণত স্বজ্ঞাত যুক্তি এবং প্রোগ্রামের মধ্যে চিঠিপত্র হিসাবে বলা হয়। তবে আমরা যদি কল-উইড-কারেন্ট-কন্টিনেসিটি (কলসিসি) অপারেটর (যার প্রকারটি পিয়ার্সের আইনের সাথে মিলে যায়) যোগ করি তবে আমরা ক্লাসিকাল যুক্তি এবং কলসিসি সহ প্রোগ্রামগুলির মধ্যে একটি চিঠিপত্র পাই।


4

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


4

প্রথম শ্রেণির ধারাবাহিকতা সমর্থন আপনাকে $ P \ lor \ নাগ পি express প্রকাশ করতে দেয় $ কৌশলটি এই সত্যটির উপর ভিত্তি করে তৈরি করা হয় যে ধারাবাহিকতাটিকে কল করা এবং কিছু অভিব্যক্তি সহ প্রস্থান করা একই ধারাবাহিকতাটিকে একই অভিব্যক্তি দিয়ে কল করার সমতুল্য।

আরও বিশদ দেখার জন্য দয়া করে দেখুন: http://www.cs.cmu.edu/~rW/courses/logic/www-old/handouts/callcc.pdf


অন্তর্দৃষ্টি জন্য ধন্যবাদ!
পলোটোরেনস

4
2-continuation           | Sheffer stoke
n-continuation language  | Existential graph
Recursion                | Mathematical Induction

একটি বিষয় যা গুরুত্বপূর্ণ, কিন্তু এখনও তদন্ত করা হয়নি তা হ'ল 2-ধারাবাহিকতা (ধারাবাহিকতায় 2 পরামিতি লাগে) এবং শেফার স্ট্রোকের সম্পর্ক । ক্লাসিক যুক্তিতে শেফার স্ট্রোক নিজেই একটি সম্পূর্ণ লজিক সিস্টেম গঠন করতে পারে (প্লাস কিছু অপারেটর ধারণা)। কোনটি পরিচিত মানে and, or, notশুধুমাত্র Sheffer Stoke বা ব্যবহার করে বাস্তবায়ন করা যেতে পারে nand

এটি এর প্রোগ্রামিং টাইপের চিঠিপত্রের একটি গুরুত্বপূর্ণ তথ্য কারণ এটি অনুরোধ করে যে একক ধরণের সংযোজককে অন্য সমস্ত ধরণের গঠনে ব্যবহার করা যেতে পারে।

2-ধারাবাহিকতার ধরণের স্বাক্ষর (a,b) -> Void। এই বাস্তবায়ন আমরা যেমন 1-ধারাবাহিকতা (স্বাভাবিক continuations) বর্ণনা করতে পারেন (a,a)> অকার্যকর, যেমন পণ্যের প্রকার - ((a,b)->Void,(a,b)->Void)->Void, যেমন সমষ্টি টাইপ ((a,a)->Void,(b,b)->Void)->Void। এটি আমাদের এর প্রকাশের শক্তিটির একটি চিত্তাকর্ষক দেয়।

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

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