the definition of Applicative instance implementation for Maybe (Haskell/LYAH) -
many times tried understand functor , monad in haskell, failed. time when reached @ lyah's applicative functor, , thought understood applicative typeclasses
, had uncertainty applicative instance implementation maybe:
instance applicative maybe pure = nil <*> _ = nil (just f) <*> = fmap f
for lastly line of above snippet, understanding follows:
(1) just f
appropriated f (a->b)
in (<*>) :: f (a -> b) -> f -> f b
of class definition of applicative, , f
appropriated (a->b)
(2) something
appropriated f a
.
my question (2), why there not written just something
or like?
in functor instance implementation maybe, there fmap f (just x) = (f x)
, just x
appropriated f a
of fmap :: (a -> b) -> f -> f b
.
for verifying understanding, changed something
just something
:
instance applicative maybe pure = nil <*> _ = nil (just f) <*> (just something) = fmap f (just something)
under gchi, tried
just (+3) <*> 9
and got same result just 12
, when tried
just (++"hahah") <*> nothing`
i got error
*** exception: functor.hs:(88,3)-(89,60): non-exhaustive patterns in function <*>
i don't know why or things miss?
(this extension of comment , not reply question)
this alternate definition easier grasp:
instance applicative maybe pure = (just f) <*> (just x) = (f x) _ <*> _ = nil
i think fell trap of interpreting much out of name something
. seek name variables f
, x
in context of applicatives (in context of <*>
, precise), that's are, function , value function applied to.
haskell
No comments:
Post a Comment