স্বজ্ঞাত টাইপ তত্ত্বের সমন্বয়যুক্ত যুক্তি কি?


87

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

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

forall a : Int -> a < 0 -> a + a < a

ফোরাল ব্যবহার না করে একই জিনিস প্রকাশ করা যেতে পারে?


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

উত্তর:


52

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

টার্গেট টাইপ থিওরি

সম্পূর্ণতার জন্য, আমি বিধিগুলি উপস্থাপন করব। প্রসঙ্গের বৈধতা কেবলমাত্র বলেছে যে আপনি নতুন করে ভেরিয়েবলগুলি সংযুক্ত করে খালি থেকে প্রসঙ্গ তৈরি করতে পারবেন Set

                     G |- valid   G |- S : Set
--------------     ----------------------------- x fresh for G
  . |- valid         G, x:S |- valid

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

  G |- valid             G |- S : Set   G |- T : Pi S \ x:S -> Set
------------------     ---------------------------------------------
  G |- Set : Set         G |- Pi S T : Set

  G |- S : Set   G, x:S |- t : T x         G |- f : Pi S T   G |- s : S
------------------------------------     --------------------------------
  G |- \ x:S -> t : Pi S T                 G |- f s : T s

  G |- valid                  G |- s : S   G |- T : Set
-------------- x:S in G     ----------------------------- S ={beta} T
  G |- x : S                  G |- s : T

আসল থেকে কিছুটা ভিন্নতায়, আমি ল্যাম্বডাকে একমাত্র বাঁধাইকারী অপারেটর তৈরি করেছি, সুতরাং পাইয়ের দ্বিতীয় যুক্তিটি যেভাবে ইনপুটটির উপর নির্ভর করে ফেরতের ধরণটি নির্ভর করে তার একটি ফাংশন হওয়া উচিত। কনভেনশন দ্বারা (যেমন আগডায়, তবে দুঃখের সাথে হাস্কেল নয়) ল্যাম্বডা এর পরিধি যথাসম্ভব ডানদিকে প্রসারিত হয়েছে, সুতরাং আপনি যখন উচ্চতর অর্ডার অপারেটরের সর্বশেষ যুক্তি হন তখন আপনি প্রায়শই বিমূর্ততা বিস্মৃত রাখতে পারেন: আপনি দেখতে পাচ্ছেন যে আমি করেছি পাই এর সাথে আপনার আগদা টাইপ (x : S) -> Tহয়ে যায় Pi S \ x:S -> T

( ডিগ্রেশন । ল্যাম্বডায় টাইপ টীকাগুলি প্রয়োজনীয় যদি আপনি বিমূর্তির ধরণের সংশ্লেষ করতে সক্ষম হন তবে আপনি যদি আপনার মোডাস অপারেন্ডি হিসাবে চেক টাইপ করে চেক করতে স্যুইচ করেন তবে আপনার বিটা-রেডেক্স পরীক্ষা করার জন্য এখনও টীকাগুলির দরকার (\ x -> t) sআছে, কারণ আপনার কোনও উপায় নেই as সামগ্রীর থেকে অংশগুলির প্রকারগুলি অনুমান করার জন্য I আমি আধুনিক ডিজাইনারদের ধরণগুলি পরীক্ষা করতে এবং বিটা-রেডেক্সগুলি খুব সিনট্যাক্স থেকে বাদ দেওয়ার পরামর্শ দিই))

( ডিগ্রেশন । এই সিস্টেমটি Set:Setবিভিন্ন "মিথ্যা প্যারাডোক্সেস" এর এনকোডিংয়ের অনুমতি দেয়ায় বেমানান Mart আমরা জানি সবচেয়ে খারাপ বিষাক্ত নির্মাণ))

সংযুক্তকারী সিনট্যাক্স এবং সাধারণকরণ

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

এখন আমরা টাইপযুক্ত সংযুক্ত সিনট্যাক্স (ফ্রি ভেরিয়েবল সহ) সংজ্ঞা দিতে পারি:

data SKUP = S | K | U | P deriving (Show, Eq)

data Unty a
  = C SKUP
  | Unty a :. Unty a
  | V a
  deriving (Functor, Eq)
infixl 4 :.

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

এখানে নর্মালাইজেশন:

norm :: Unty a -> Unty a
norm (f :. a)  = norm f $. a
norm c         = c

($.) :: Unty a -> Unty a -> Unty a        -- requires first arg in normal form
C S :. f :. a $. g  = f $. g $. (a :. g)  -- S f a g = f g (a g)   share environment
C K :. a $. g       = a                   -- K a g = a             drop environment
n $. g              = n :. norm g         -- guarantees output in normal form
infixl 4 $.

(পাঠকের জন্য একটি অনুশীলন হ'ল সাধারণ ফর্মগুলির জন্য কোনও প্রকারের সংজ্ঞা দেওয়া এবং এই ক্রিয়াকলাপগুলির প্রকারগুলি তীক্ষ্ণ করা))

টাইপ থিওরি উপস্থাপন

আমরা এখন আমাদের টাইপ তত্ত্বের জন্য একটি সিনট্যাক্স সংজ্ঞায়িত করতে পারি।

data Tm a
  = Var a
  | Lam (Tm a) (Tm (Su a))    -- Lam is the only place where binding happens
  | Tm a :$ Tm a
  | Pi (Tm a) (Tm a)          -- the second arg of Pi is a function computing a Set
  | Set
  deriving (Show, Functor)
infixl 4 :$

data Ze
magic :: Ze -> a
magic x = x `seq` error "Tragic!"

data Su a = Ze | Su a deriving (Show, Functor, Eq)

আমি বেলগ্রার্ড এবং হুক পদ্ধতিতে (বার্ড এবং পেটারসনের জনপ্রিয় হিসাবে) একটি ডি ব্রুইজন সূচক উপস্থাপনা ব্যবহার করি। প্রকারটির Su aতুলনায় আরও একটি উপাদান রয়েছে aএবং আমরা এটি একটি বাইন্ডারের নিচে মুক্ত ভেরিয়েবলের ধরণ হিসাবে ব্যবহার করি Ze, নতুন সীমাবদ্ধ ভেরিয়েবল Su xহিসাবে এবং পুরানো মুক্ত ভেরিয়েবলের স্থানান্তরিত প্রতিনিধিত্ব হিসাবে x

সংযুক্তকারীদের শর্তাদি অনুবাদ করা

এবং এটি হয়ে গেলে, বন্ধনী বিমূর্তনের উপর ভিত্তি করে আমরা সাধারণ অনুবাদটি অর্জন করি ।

tm :: Tm a -> Unty a
tm (Var a)    = V a
tm (Lam _ b)  = bra (tm b)
tm (f :$ a)   = tm f :. tm a
tm (Pi a b)   = C P :. tm a :. tm b
tm Set        = C U

bra :: Unty (Su a) -> Unty a               -- binds a variable, building a function
bra (V Ze)      = C S :. C K :. C K        -- the variable itself yields the identity
bra (V (Su x))  = C K :. V x               -- free variables become constants
bra (C c)       = C K :. C c               -- combinators become constant
bra (f :. a)    = C S :. bra f :. bra a    -- S is exactly lifted application

সংযুক্তকারীগুলি টাইপ করা হচ্ছে

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

U : Set
P : (A : Set) -> (B : (a : A) -> Set) -> Set

KCombinator কিছু টাইপ মান উত্তোলন করতে ব্যবহৃত হয় Aকিছু অন্যান্য টাইপ উপর একটি ধ্রুবক ফাংশন G

  G : Set   A : Set
-------------------------------
  K : (a : A) -> (g : G) -> A

SCombinator একটি টাইপ, যার উপর যন্ত্রাংশ সব নির্ভর করে হতে পারে ধরে লিফট অ্যাপ্লিকেশন ব্যবহার করা হয়।

  G : Set
  A : (g : G) -> Set
  B : (g : G) -> (a : A g) -> Set
----------------------------------------------------
  S : (f : (g : G) ->    (a : A g) -> B g a   ) ->
      (a : (g : G) ->    A g                  ) ->
           (g : G) ->    B g (a g)

আপনি যদি প্রকারের দিকে তাকান S, আপনি দেখতে পাবেন এটি প্রকারের তত্ত্বের প্রাসঙ্গিক প্রয়োগের নিয়মটি ঠিক বলেছে , তাই এটিই অ্যাপ্লিকেশন নির্মাণকে প্রতিফলিত করার উপযুক্ত করে তোলে। এটাই তার কাজ!

আমাদের তখন কেবল বন্ধ জিনিসগুলির জন্য আবেদন রয়েছে

  f : Pi A B
  a : A
--------------
  f a : B a

তবে একটি ছিনতাই আছে। আমি সংযুক্তকারীগুলির প্রকারগুলি সাধারণ ধরণের তত্ত্বে লিখেছি, সংযুক্তকরণের তত্ত্ব নয়। ভাগ্যক্রমে, আমার কাছে একটি মেশিন রয়েছে যা অনুবাদটি তৈরি করবে।

একটি সম্মিলিত টাইপ সিস্টেম

---------
  U : U

---------------------------------------------------------
  P : PU(S(S(KP)(S(S(KP)(SKK))(S(KK)(KU))))(S(KK)(KU)))

  G : U
  A : U
-----------------------------------------
  K : P[A](S(S(KP)(K[G]))(S(KK)(K[A])))

  G : U
  A : P[G](KU)
  B : P[G](S(S(KP)(S(K[A])(SKK)))(S(KK)(KU)))
--------------------------------------------------------------------------------------
  S : P(P[G](S(S(KP)(S(K[A])(SKK)))(S(S(KS)(S(S(KS)(S(KK)(K[B])))(S(KK)(SKK))))
      (S(S(KS)(KK))(KK)))))(S(S(KP)(S(S(KP)(K[G]))(S(S(KS)(S(KK)(K[A])))
      (S(S(KS)(KK))(KK)))))(S(S(KS)(S(S(KS)(S(KK)(KP)))(S(KK)(K[G]))))
      (S(S(KS)(S(S(KS)(S(KK)(KS)))(S(S(KS)(S(S(KS)(S(KK)(KS)))
      (S(S(KS)(S(KK)(KK)))(S(KK)(K[B])))))(S(S(KS)(S(S(KS)(S(KK)(KS)))(S(KK)(KK))))
      (S(KK)(KK))))))(S(S(KS)(S(S(KS)(S(KK)(KS)))(S(S(KS)(S(KK)(KK)))
      (S(S(KS)(KK))(KK)))))(S(S(KS)(S(S(KS)(S(KK)(KS)))(S(KK)(KK))))(S(KK)(KK)))))))

  M : A   B : U
----------------- A ={norm} B
  M : B

সুতরাং সেখানে আপনার এটি রয়েছে, তার সমস্ত অপঠনীয় গৌরব: একটি সংযুক্ত উপস্থাপনা Set:Set!

এখনও কিছুটা সমস্যা আছে। সিস্টেমের বাক্য গঠনটি আপনাকে কেবল শর্তাবলী থেকে G, Aএবং Bপ্যারামিটারগুলির জন্য Sএবং অনুরূপভাবে অনুমান করার কোনও উপায় দেয় না K। স্বতঃস্ফূর্তভাবে , আমরা টাইপিং ডেরিভেশনগুলি অ্যালগরিদমভাবে যাচাই করতে পারি , তবে আমরা কেবল মূল সিস্টেমের সাথে সংযুক্তকারী পদগুলি টাইপচেক করতে পারি না। যে কাজটি করতে পারে তা হ'ল টাইপেকেকারের ইনপুটটি এস এবং কে এর ব্যবহারগুলিতে টাইপ টীকাগুলি সহ্য করতে হবে, কার্যকরভাবে ডেরিভিশন রেকর্ড করা। কিন্তু এটি কীটপতঙ্গগুলির আরেকটি ক্যান ...

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

সংযুক্তকারীদের প্রকারের উত্পাদন

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

আমি সংযোগকারীগুলির ধরণগুলি সম্পূর্ণরূপে তাদের পরামিতিগুলিতে বিমূর্তভাবে লিখতে পারি। আমি আমার হ্যান্ডি pilফাংশনটি ব্যবহার করি যা ডো এবং ডায়মন্ডের ধরণের পুনরাবৃত্তি এড়াতে পাই এবং ল্যাম্বডাকে একত্রিত করে এবং বরং সাহায্যে আমাকে ভেরিয়েবলগুলি বাঁধার জন্য হাস্কেলের ফাংশন স্পেস ব্যবহার করতে দেয়। সম্ভবত আপনি নিম্নলিখিত নিম্নলিখিত পড়তে পারেন!

pTy :: Tm a
pTy = fmap magic $
  pil Set $ \ _A -> pil (pil _A $ \ _ -> Set) $ \ _B -> Set

kTy :: Tm a
kTy = fmap magic $
  pil Set $ \ _G -> pil Set $ \ _A -> pil _A $ \ a -> pil _G $ \ g -> _A

sTy :: Tm a
sTy = fmap magic $
  pil Set $ \ _G ->
  pil (pil _G $ \ g -> Set) $ \ _A ->
  pil (pil _G $ \ g -> pil (_A :$ g) $ \ _ -> Set) $ \ _B ->
  pil (pil _G $ \ g -> pil (_A :$ g) $ \ a -> _B :$ g :$ a) $ \ f ->
  pil (pil _G $ \ g -> _A :$ g) $ \ a ->
  pil _G $ \ g -> _B :$ g :$ (a :$ g)

এগুলি সংজ্ঞায়িত করে, আমি প্রাসঙ্গিক মুক্ত সাবটারমগুলি বের করেছি এবং অনুবাদটির মাধ্যমে এগুলি চালিত করেছি।

একটি ডি ব্রুইজন এনকোডিং টুলকিট

কীভাবে তৈরি করবেন তা এখানে pil। প্রথমত, আমি Finভেরিয়েবলের জন্য ব্যবহৃত এক সেট সেটের একটি শ্রেণির সংজ্ঞা দিই । এই জাতীয় প্রতিটি embসেটের উপরের সেটে একটি কনস্ট্রাক্টর-সংরক্ষণকারী এডিং রয়েছে, এবং একটি নতুন topউপাদান রয়েছে, এবং আপনি সেগুলি আলাদা করে বলতে পারেন: embdফাংশনটি আপনাকে জানায় যে কোনও মান এর চিত্রের মধ্যে রয়েছে কিনা emb

class Fin x where
  top :: Su x
  emb :: x -> Su x
  embd :: Su x -> Maybe x

আমরা অবশ্যই এবং এর Finজন্য তাত্ক্ষণিকভাবে করতে পারিZeSuc

instance Fin Ze where
  top = Ze              -- Ze is the only, so the highest
  emb = magic
  embd _ = Nothing      -- there was nothing to embed

instance Fin x => Fin (Su x) where
  top = Su top          -- the highest is one higher
  emb Ze     = Ze            -- emb preserves Ze
  emb (Su x) = Su (emb x)    -- and Su
  embd Ze      = Just Ze           -- Ze is definitely embedded
  embd (Su x)  = fmap Su (embd x)  -- otherwise, wait and see

দুর্বল ক্রিয়াকলাপের সাথে আমি এখন কম বা সমান সংজ্ঞা দিতে পারি ।

class (Fin x, Fin y) => Le x y where
  wk :: x -> y

wkফাংশনের উপাদান এম্বেড করা উচিত xহিসাবে বৃহত্তম উপাদান y, যাতে অতিরিক্ত কিছু yছোট, এবং এইভাবে ডি Bruijn সূচক পদ, আরো স্থানীয়ভাবে আবদ্ধ।

instance Fin y => Le Ze y where
  wk = magic    -- nothing to embed

instance Le x y => Le (Su x) (Su y) where
  wk x = case embd x of
    Nothing  -> top          -- top maps to top
    Just y   -> emb (wk y)   -- embedded gets weakened and embedded

এবং একবার আপনি এটি বাছাই হয়ে গেলে, কিছুটা র‌্যাঙ্ক-এন স্কালডুজেরি বাকীটি করে।

lam :: forall x. Tm x -> ((forall y. Le (Su x) y => Tm y) -> Tm (Su x)) -> Tm x
lam s f = Lam s (f (Var (wk (Ze :: Su x))))
pil :: forall x. Tm x -> ((forall y . Le (Su x) y => Tm y) -> Tm (Su x)) -> Tm x
pil s f = Pi s (lam s f)

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


এটি দুর্দান্ত মূর্খ হতে পারে তবে আপনি যদি সংযুক্তকারী যুক্ত করেন তবে এই চিত্রটি কীভাবে পরিবর্তিত হবে F? Fএটির প্রথম যুক্তির উপর নির্ভর করে ভিন্নভাবে কাজ করে: যদি Aএকটি পরমাণু হয়, Mএবং Nপদ হয় এবং PQএকটি সংমিশ্রিত হয়, তবে FAMN -> Mএবং F(PQ)MN -> NPQ। এটি SK(I)ক্যালকুলাসে উপস্থাপন করা যায় না তবে Kএটি প্রতিনিধিত্ব করা যায় FF। এটি দিয়ে কী আপনার পয়েন্ট ফ্রি এমএলটিটি বাড়ানো সম্ভব?
kram1032

আমি দৃ sure়ভাবে নিশ্চিত যে এই বন্ধনী বিমূর্ত পদ্ধতিতে সমস্যা আছে, বিশেষত "সংযুক্তকারীরা ধ্রুব হয়ে যায়" অংশ, যা λx.c কে কেসি থেকে কম্বিনেটরগুলির জন্য সি {{এস, কে, ইউ, পি tes অনুবাদ করে} সমস্যাটি হ'ল এই সংযুক্তকারীগুলি বহুবিধ, এবং এক্সের উপর নির্ভর করে এমন এক ধরণের ব্যবহৃত হতে পারে; এই ধরণের অনুবাদ এই অনুবাদ দ্বারা সংরক্ষণ করা যায় না। কংক্রিটের উদাহরণ হিসাবে λ (A : Set) → λ (a : A) → a, টাইপের শব্দটি (A : Set) → (a : A) → Aঅনুবাদ করা হয় S(S(KS)(KK))(KK), যা দ্বিতীয় ধরণের আর্গুমেন্টের ধরণটি প্রথম যুক্তির উপর নির্ভর করে এমন ধরণের ক্ষেত্রে ব্যবহার করা যায় না।
অ্যান্ডারস কাসের্গ

8

আমার অনুমান "বন্ধনী বিমূর্তি" কিছু পরিস্থিতিতে নির্ভরশীল ধরণের জন্যও কাজ করে। নিম্নলিখিত কাগজের ৫ নং বিভাগে আপনি কিছু কে ও এস প্রকারের সন্ধান করতে পারেন:

বিদ্বেষপূর্ণ তবে অর্থবোধমূলক সংযোগগুলি
নির্ভরশীল প্রকার-নিরাপদ সিনট্যাক্স এবং মূল্যায়ন
কনর ম্যাকব্রাইড, স্ট্র্যাথক্লাইড বিশ্ববিদ্যালয়, ২০১০

একটি ল্যাম্বডা এক্সপ্রেশনকে সংযুক্তিযুক্ত অভিব্যক্তিতে রূপান্তর করা প্রাকৃতিক ছাড়ের প্রমাণকে হিলবার্ট স্টাইল প্রমাণ হিসাবে রূপান্তর করার সাথে প্রায় অনুরূপ।

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