
-- Requires for instances
{-# LANGUAGE MultiParamTypeClasses #-}

-- Use the supermonad plugin.
{-# LANGUAGE RebindableSyntax #-}
{-# OPTIONS_GHC -fplugin Control.Supermonad.Plugin #-}

-- Remove this so compilation creates a proper executable.
--module MainSet ( main ) where

import Control.Supermonad.Constrained.Prelude

import qualified Data.Set as S

main :: IO ()
main = do
  putStrLn $ show $ do
    let s = S.fromList ['a', 'b', 'c']
    a <- s
    b <- s
    c <- fmap (const 'd') s
    return [a, b, c]
