Skip to content

Instantly share code, notes, and snippets.

@googleson78
Last active July 9, 2019 21:48
Show Gist options
  • Save googleson78/c493814fb9dbaa9138ba8f3b975b9fbd to your computer and use it in GitHub Desktop.
Save googleson78/c493814fb9dbaa9138ba8f3b975b9fbd to your computer and use it in GitHub Desktop.
{-# LANGUAGE GADTs #-}
instance Бурито Списък where
(✨) хикс = хикс `СлепенС` ПразенСписък
списъкОтМесо 🔜 рецептаЗаБуритоСМесоИЗеленчуци =
(💥) ((📄) рецептаЗаБуритоСМесоИЗеленчуци списъкОтМесо)
class Бурито обвивка where
(✨) :: месо -> обвивка месо
(🔜) :: обвивка месо -> (месо -> обвивка месоСъсЗеленчуци) -> обвивка месоСъсЗеленчуци
data Списък елемент
= ПразенСписък
| елемент `СлепенС` (Списък елемент)
deriving Show
(📄) :: (такова -> онакова) -> Списък такова -> Списък онакова
(📄) _ ПразенСписък = ПразенСписък
(📄) таковай (това `СлепенС` другите) = таковай това `СлепенС` (📄) таковай другите
(➕) :: (нещо ~ същотоНещо, същотоНещо ~ катПървитеДве) => Списък нещо -> Списък същотоНещо -> Списък катПървитеДве
ПразенСписък ➕ някъвДруг = някъвДруг
(това `СлепенС` другите) ➕ някъвДруг = това `СлепенС` другите ➕ някъвДруг
(💥) :: Списък (Списък нещо) -> Списък нещо
(💥) ПразенСписък = ПразенСписък
(💥) (многоТакива `СлепенС` многоДруги) = многоТакива ➕ (💥) многоДруги
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment