Skip to content

Instantly share code, notes, and snippets.

@emanon-was
Created November 11, 2017 13:33
Show Gist options
  • Save emanon-was/1458167b1161b8ec138ca95c809ab580 to your computer and use it in GitHub Desktop.
Save emanon-was/1458167b1161b8ec138ca95c809ab580 to your computer and use it in GitHub Desktop.
型クラスのインスタンスに型制約を指定したい時のGHC拡張
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE IncoherentInstances #-}
class YesNo a where
yesno :: a -> Bool
instance (Num a, Eq a) => YesNo a where
yesno 0 = False
yesno _ = True
instance YesNo [a] where
yesno [] = False
yesno _ = True
instance YesNo Bool where
yesno = id
instance YesNo (Maybe a) where
yesno (Just _) = True
yesno Nothing = False
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment