Skip to content

Instantly share code, notes, and snippets.

@kana-sama
Created April 27, 2022 23:26

Revisions

  1. kana created this gist Apr 27, 2022.
    22 changes: 22 additions & 0 deletions listdot.hs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,22 @@
    {-# LANGUAGE FlexibleInstances #-}
    {-# LANGUAGE FunctionalDependencies #-}
    {-# LANGUAGE MultiParamTypeClasses #-}

    class ListDot t a | t -> a where
    (•) :: ([a] -> [a]) -> a -> t

    instance ListDot ([a] -> [a]) a where
    (f x) xs = f (x : xs)

    instance ListDot [a] a where
    f x = f [x]

    list :: [a] -> [a]
    list = id

    x :: [Int]
    x =
    list
    1
    2
    3