Guest User

Untitled

a guest
Jan 19th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {-# LANGUAGE NoImplicitPrelude #-}
  2. import List
  3. import Functor --for test
  4.  
  5. class (Functor f) => Applicative f where
  6.     pure :: a -> f a
  7.     (<*>) :: f (a -> b) -> f a -> f b
  8.  
  9. --Test. Works for me.
  10. instance Applicative List where
  11.     pure x = (Cons x Nil)
  12.     (Cons f Nil) <*> (Cons x Nil) = (Cons (f x) Nil)
  13.     (Cons f l) <*> (Cons x Nil) = (Cons (f x) (l <*> x))
  14.     (Cons f Nil) <*> (Cons x l) = (Cons (f x) (f <*> l))
  15.     (Cons f l1) <*> (Cons x l2) = (Cons (f x) (Cons (l1 <*> x) (Cons (f <*> l2) (l1 <*> l2))))
Add Comment
Please, Sign In to add comment