mirror of
https://github.com/github/semantic.git
synced 2024-12-18 12:21:57 +03:00
Merge remote-tracking branch 'origin/master' into shelly-git-action
This commit is contained in:
commit
69c11c816e
@ -1,4 +1,4 @@
|
||||
{-# LANGUAGE RankNTypes, KindSignatures #-}
|
||||
{-# LANGUAGE DerivingStrategies, GeneralizedNewtypeDeriving, RankNTypes, KindSignatures #-}
|
||||
|
||||
-- | -- This technique is due to Oleg Grenrus: <http://oleg.fi/gists/posts/2019-03-21-flag.html>
|
||||
-- The implementation is clean-room due to unclear licensing of the original post.
|
||||
@ -10,7 +10,7 @@ module Data.Flag
|
||||
, choose
|
||||
) where
|
||||
|
||||
import Data.Coerce
|
||||
import Prologue
|
||||
|
||||
-- | To declare a new flag, declare a singly-inhabited type:
|
||||
-- @data MyFlag = MyFlag@
|
||||
@ -19,6 +19,8 @@ import Data.Coerce
|
||||
-- working with multiple flag values in flight, as the 'toBool' deconstructor provides a witness
|
||||
-- that you really want the given semantic flag value from the flag datum.
|
||||
newtype Flag (t :: *) = Flag Bool
|
||||
deriving stock (Eq, Show)
|
||||
deriving newtype NFData
|
||||
|
||||
-- | The constructor for a 'Flag'. You specify @t@ with a visible type application.
|
||||
flag :: t -> Bool -> Flag t
|
||||
|
Loading…
Reference in New Issue
Block a user