Ben Bartosz müthiş blog okuma ve meydan okuma söz 3 birlikte takip ediyorum, biraz stumped için:Doğal Dönüşümler Okuyucu Bool itibaren Belki
https://bartoszmilewski.com/2015/04/07/natural-transformations/
S3: tanımlamak bazı doğal dönüşümler gelen
newtype Reader e a = Reader (e->a)
runReader :: Reader e a -> e -> a
runReader (Reader f) env = f env
instance Functor (Reader e) where
fmap f (Reader g) = Reader (\x -> f (g x))
: Reader Bool
Maybe
I olarak Okuyucu functor tanımladınız
ve ben
n :: Reader Bool a -> Maybe a
Sezgim Reader
'ın çevre True
ise, bir Just a
sahip olmasıdır doğal dönüşümü bulmak istiyoruz ve Nothing
için False
, o zaman doğal dönüşüm projeleri. Ama bu biraz monadik hissediyor, ya da Reader Bool (Maybe Int)
gibi Reader
iç içe bir Maybe
gibi, emin değilim.
Bunu nasıl yapacağımı bilemiyorum.
n :: Reader Bool a -> Maybe a
n (Reader f) = Just (f True)
Ama bu ortam dikkate almak, ne de Nothing
döndüremez: Ben en iyisi.
fmap
'dan bir kare oluşturmak ve doğal dönüşümler oluşturmak için bir yapı oluşturmak istiyorum. ex
:
nat
Reader Bool Int +---------------------------> Maybe Int
+ +
| |
| |
| |
| fmap show | fmap show
| |
| |
| |
| |
v nat v
Reader Bool String +--------------------------> Maybe String
beni boşlukları doldurmak yardımcı olabiliriz? Bir yorumda daha önce söylediğim gibi, çevreyi kullanmak istersiniz, ancak, yalnızca Reader'ınız olduğundan, hiçbir ortam yoktur ve bunu kendiniz sağlamanız gerekir.
Çevreyi kullanmak istemezsiniz, ancak, yalnızca Reader'ınız olduğundan, hiçbir ortam yoktur ve bunu kendiniz sağlamanız gerekir. Ben sadece (f Gerçek), “Sadece (f Yanlış)” ve “Hiçbir şeyin” bu bisikletçiler arasındaki tüm doğal dönüşümler olduğunu hissediyorum. – lisyarus