A `চ্ছিক of এর উপস্থাপনের ভ্যান রয়েছে কি?


15

অনেক ধরণের অপটিক্সের একটি ভ্যান লাথোভেনের উপস্থাপনা থাকে।

উদাহরণস্বরূপ, Lensএক প্রকারের Lens s t a b প্রতিনিধিত্ব করা যেতে পারে:

 Functor f => (a -> f b) -> s -> f t

একইভাবে ক Traversal, এর Functorজন্য সীমাবদ্ধতা অদলবদল করে একইভাবে উপস্থাপন করা যেতে পারে Applicative:

 Applicative f => (a -> f b) -> s -> f t

মনোকল এবং অ্যারোর মতো বেশ কয়েকটি অপটিক্স ফ্রেমওয়ার্ক একটি ধরণের সংজ্ঞা দেয় Optional

এক চোখো চশমা এর অপটিক্স অনুক্রমের যে Optional মধ্যবর্তী তড়কা LensএবংTraversal

যেমনটি আমি এটি বুঝতে পারি: যদি একটি Traversalএর মতো হয় যা অনেক লক্ষ্যবস্তুতে শূন্যLens হতে পারে , তবে একটি এর মতো একটির একটি লক্ষ্য থেকে শূন্য হতে পারে ।OptionalLens

মনোোকলে, Optionalএকটি ফাংশনের জুড়ি হিসাবে সংজ্ঞায়িত করা হয়:

getOrModify :: s -> Either t a 
set :: (b, s) -> t

এক চোখো চশমা সোর্স কোডে মন্তব্য প্রমাণ করে যে এটি একটি প্রতিনিধিত্ব করতে সম্ভব Optional"দুর্ব্বল যেমন PLensএবং দুর্বল PPrism"

Optionalভ্যান লাথোভেন ফাংশন হিসাবে কোনও উপস্থাপন করা কি সম্ভব ?

উত্তর:


10

যদি ফান্টেক্টর / প্রয়োগকারী / মোনাড শ্রেণিবিন্যাস আরও সূক্ষ্ম-বর্ণযুক্ত হয় তবে এটি উপস্থাপনের একটি উপায় থাকবে। নির্দিষ্টভাবে:

class Functor f => Pointed f where
    pure :: a -> f a

type Optional s t a b = forall f. Pointed f => (a -> f b) -> s -> f t

নোট করুন যে Affineশ্রেণীর শ্রেণিবিন্যাসের মধ্যে যদি ঝরঝরে থাকে তবে এই ধরণের নামটি সম্ভবত লেন্সের গ্রন্থাগারে রাখা হবে।


1
এটি আমার ব্যবহারের ক্ষেত্রে সুবিধামতভাবে সম্পূর্ণ জরিমানা, যা স্কেল অপটিক্স লাইব্রেরি যেখানে "স্ক্র্যাচ থেকে ফান্টর হায়ারার্কি লিখেছি" এবং তাই আমি এটির সাথে যা খুশি তা করতে পারি। আমি চিন্তা সঠিক Am এর মানে দাড়ায় যে যে যদি আমি এছাড়াও মধ্যে একটি আরেক ধরনের ক্লাসের ছিল Functorএবং Applicativeসঙ্গে liftA2, কিন্তু কোন বিশুদ্ধ, তারপর যে একটি অপটিক সঙ্গে সংজ্ঞায়িত হবে অনেকের কাছে এক লক্ষ্যমাত্রা? এর কি কোনও নাম আছে?
জো

1
এটি যে পরামর্শ দেয় না। অপটিক কী বলা হবে তা আমার কোনও ধারণা নেই।
কার্ল

4
@ জো সেই মধ্যবর্তী শ্রেণিকে Apply"সেমিগ্রোপিডস" প্যাকেজে ডাকা হয়। hackage.haskell.org/package/semigroupoids-5.3.3/docs/…
দানিডিয়াজ ২

2
... এবং lensপ্যাকেজটিতে সম্পর্কিত অপটিক বলা হয়Traversal1
বেনজামিন হডসন

@ কার্ল কীভাবে আমরা যাচাই করতে পারি যে type Optional s t a bএটি সত্যই সেই অপটিকের সঠিক প্রতিনিধিত্ব এবং সমস্ত উপযুক্ত আইন রয়েছে? এটি একটি যাদু কৌশল বলে মনে হচ্ছে। কেন Pointedএবং না, বলুন Copointed? অন্য প্রদত্ত অপটিকের জন্য, আমরা কীভাবে সঠিক প্রক্টরেক্টরটির উপস্থাপনা অনুমান করতে পারি?
winitzki
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.