Quick actions

cmd+k|ctrl+k

Navigation

Languages

Generic-ish monoid

Snippet info

Language

Elm

Visibility

public

Author

mjg.py3

Created

2017-05-26T02:06:15Z

Updated

2017-05-26T02:06:15Z

import Html exposing (..)

type alias Monoid a =
  { mempty : a
  , mappend : a -> a -> a
  }
  
listMonoid : Monoid (List a)
listMonoid = 
  { mempty = []
  , mappend = (++)
  }
  
type Sum = Sum Int
  
sumMonoid : Monoid Sum
sumMonoid =
  { mempty = Sum 0
  , mappend = \(Sum a) (Sum b) -> Sum (a + b)
  }
  
genericTrippleAppend : Monoid a -> a -> a -> a -> a
genericTrippleAppend m a b c =
  m.mappend (m.mappend a b) c

main =
    text "Hello World!"
INFO