প্রস্তাবিত প্রকারের সংজ্ঞায় "রক্ষিত" নেতিবাচক ঘটনাগুলি, সবসময়ই খারাপ?


11

আমি জানি কিছু নেতিবাচক ঘটনাগুলি কীভাবে অবশ্যই খারাপ হতে পারে:

data False

data Bad a = C (Bad a -> a)

selfApp :: Bad a -> a
selfApp (x@(C x')) = x' x

yc :: (a -> a) -> a
yc f = selfApp $ C (\x -> f (selfApp x))

false :: False
false = yc id

তবে, আমি নিশ্চিত না:

  • নেতিবাচক ঘটনাযুক্ত সমস্ত প্ররোচক ধরনের ভুল হতে পারে;

  • যদি তা হয় তবে এটি করার একটি জ্ঞাত যান্ত্রিক পদ্ধতি রয়েছে;

উদাহরণস্বরূপ, আমি এই ধরণের ভুল হওয়ার চেষ্টা করে লড়াই করছি:

type Not a = a -> False

data Bad2 a = C2 (Bad2 (Not a) -> a)

এই বিষয়ে সাহিত্যের কোনও পয়েন্টার প্রশংসা করা হবে।


1
এই কোক? Haskell,? সিউডো টাইপ তত্ত্ব? "ভুল হতে" বলতে কী বোঝ?
ডেভ ক্লার্ক

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

উত্তর:


10

নেতিবাচক ঘটনাগুলিতে নিষেধাজ্ঞার কারণটি নাস্টার-তারস্কি উপপাদ্যের সাথে উপমা দিয়ে বোঝা যায়। এই উপপাদ্যটি বলে

যদি সম্পূর্ণ জাফরি এবং : এল এল একটি একঘেয়েমি ফাংশন এল , তারপর নির্দিষ্ট বিন্দুর সেট একটি সম্পূর্ণ জাফরি হয়। বিশেষত, সর্বনিম্ন নির্দিষ্ট পয়েন্ট μ f এবং সর্বাধিক স্থির বিন্দু ν f থাকেএল:এলএলএলμν

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

আমরা যখন মডেল তত্ত্ব থেকে প্রুফ তত্ত্বে চলে যাই, জালাগুলি বিভাগগুলিতে সাধারণীকরণ করে। প্রকারভেদ শ্রেণীর অবজেক্ট হিসাবে দেখা যায় এবং একটি মানচিত্র e : P Q একটি প্রমাণ উপস্থাপন করে যা Q Q থেকে প্রাপ্ত হতে পারে ।সি:পিপ্রশ্নঃপ্রশ্নঃপ্রশ্নঃ

আমরা যখন পুনরাবৃত্ত সমীকরণ দ্বারা সংজ্ঞায়িত প্রকারগুলি ব্যাখ্যা করার চেষ্টা করি, ee, , করণীয় সুস্পষ্ট কাজ হ'ল নাস্টার-তারস্কি উপপাদ্যের সাধারণীকরণের সন্ধান করা। সুতরাং একটি জাফরি একটি একঘেয়েমি ফাংশনের পরিবর্তে, আমরা জানি একটি চানfunctor এফ : সিসি , যা বস্তু বস্তু পাঠায়, কিন্তু তাই monotonicity শর্ত সাধারণীকরণ যে প্রতি মানচিত্র: পি প্রশ্ন পায় একটি মানচিত্র এফ ( ) : এফ ( পি ) এফ ( কিউ ) ( এফের সমন্বয় শর্তের সাথে যে F পরিচয়গুলিতে পরিচয় প্রেরণ করে এবং রচনাগুলি সংরক্ষণ করে যাতে Fএন=μα1+ +α এফ:সিসি:পিপ্রশ্নঃএফ():এফ(পি)এফ(প্রশ্নঃ)এফ )।এফ()=এফ()এফ()

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

নির্ভরশীল-টাইপযুক্ত ভাষায়, আপনি সূচিযুক্ত এবং প্যারামিটারাইজড প্রকারগুলিও রেখেছেন, সুতরাং আপনার আসল কাজটি আরও জটিল। বব আতকি (যিনি এখানে এবং এখানে এই সম্পর্কে ব্লগ করেছেন ) আমাকে বলেছেন যে গল্পটি দেখার জন্য ভাল জায়গাটি হ'ল:

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

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

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


7

কখনও কখনও আপনি "ভাগ্য দ্বারা" পুনরাবৃত্ত সমীকরণ সমাধান করতে পারেন।

একজন(একজন)একজন
  1. একজনএকজন

    একজনএকজন1।
    1
  2. একজন()1

উপসংহার: দুটি সমাধান রয়েছে, খালি টাইপ (যা আপনি বলেছিলেন False) এবং ইউনিটের ধরণ ()

একজন(একজন2)2,
data Cow a = Moo ((a -> Bool) -> Bool)

একজন22একজনএকজন22একজন

এন22এন
2এন22এনInteger(Integer -> Bool) -> Bool

3

আন্দ্রেজ বা নীলের ব্যাখ্যাগুলিতে কোনও কিছু যুক্ত করা শক্ত, তবে আমি এটির শট দেব। আমি অন্তর্নিহিত শব্দার্থবিজ্ঞান উদ্ঘাটিত না করে সিনট্যাকটিক দৃষ্টিকোণকে সম্বোধন করার চেষ্টা করতে যাচ্ছি, কারণ ব্যাখ্যাটি আরও প্রাথমিক এবং আমি আপনার প্রশ্নের আরও সুস্পষ্ট উত্তর দেব।

λ

গুরুত্বপূর্ণ উল্লেখ নিম্নলিখিত:

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

বিএকটি

বিএকটি=বিএকটিএকজন

একজন

λএক্স:বিএকটিএক্স এক্স:বিএকটিএকজন

এবং তাই

(λএক্স:বিএকটিএক্স এক্স) (λএক্স:বিএকটিএক্স এক্স):একজন

বিএকটি=এফ(বিএকটি)
এফ(এক্স)এক্সএফ(এক্স)

অবশ্যই আপনি সমীকরণীয়ভাবে সংজ্ঞায়িত ধরণের সাথে নয় তবে নির্মাণকারীর সাথে কাজ করছেন , যেমন আপনার আছে

data Bad = Pack (Bad -> A)

বরং কঠোর সাম্য। তবে আপনি সংজ্ঞা দিতে পারেন

unpack :: Bad -> (Bad -> A)
unpack (Pack f) = f

এই ফলাফল ধরে রাখার জন্য যা যথেষ্ট:

 (\x:Bad -> unpack x x) (Pack (\x:Bad -> unpack x x))

একজন


আপনার দ্বিতীয় উদাহরণে জিনিসগুলি কিছুটা আরও জটিল, কারণ আপনার লাইনের সাথে সামান্য কিছু রয়েছে

বিএকটি=বিএকটি'একজন

বিএকটি'বিএকটিবিএকটি একটিবিএকটি (এনটি একটি)

type Not a = a -> False

সঙ্গে

data Not a = Not a

যদি হাস্কেল এই ধরণের সংজ্ঞা দেয় তবে এটি সহজেই সমাধান করা হবে:

type Acc = Not Acc

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

data Acc = D (Not Acc)

এখানে সমস্যা হ'ল আইসোমরফিজম তৈরি করা

Bad Acc <-> Bad (Not Acc)

আপনি মিশ্র বৈকল্পিক সঙ্গে ডিল করতে হবে।

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