{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE DataKinds #-}
module Small where
import Html
import Control.Arrow
oneElement, oneElement', oneElement''
:: ('Div ?> a)
=> a -> 'Div > a
oneElement x = div_ x
oneElement' = div_
oneElement'' = \x -> div_ x
nestedElement, nestedElement', nestedElement''
:: ('Span ?> a)
=> a -> 'Div > ('Span > a)
nestedElement x = div_ (span_ x)
nestedElement' = div_ . span_
nestedElement'' = \x -> div_ (span_ x)
parallelElement, parallelElement', parallelElement''
:: ('Span ?> a, 'Div ?> a)
=> a -> ('Div > a) # ('Span > a)
parallelElement x = div_ x # span_ x
parallelElement' = uncurry (#) . (div_ &&& span_)
parallelElement'' = \x -> div_ x # span_ x
listElement, listElement', listElement''
:: ('Div ?> a)
=> a -> ['Div > a]
listElement x = [div_ x]
listElement' = pure . div_
listElement'' = \x -> [div_ x]