Quick actions

cmd+k|ctrl+k

Navigation

Languages

Unboxed sums

Snippet info

Language

Haskell

Visibility

public

Author

rightfold

Created

2018-05-17T14:47:22Z

Updated

2018-05-17T14:51:31Z

{-# LANGUAGE MagicHash #-}
{-# LANGUAGE UnboxedSums #-}

module Main
    ( main
    ) where

import GHC.Int (Int (..))
import GHC.Prim (Int#)

type MaybeInt = (# Int# | () #)

maybeInt :: a -> (Int# -> a) -> MaybeInt -> a
maybeInt _ f (# i |    #) = f i
maybeInt z _ (#   | () #) = z

main :: IO ()
main = do
    print $ maybeInt 0 I# (# 1# | #)
    print $ maybeInt 0 I# (# | () #)
INFO