Skip to content
This repository was archived by the owner on Apr 1, 2025. It is now read-only.

Commit cd950fd

Browse files
committed
Derive a Semigroup instance for Term Monotype a.
1 parent 7d9100f commit cd950fd

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

semantic-core/src/Analysis/Typecheck.hs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{-# LANGUAGE DeriveGeneric, DeriveTraversable, FlexibleContexts, FlexibleInstances, LambdaCase, OverloadedStrings, QuantifiedConstraints, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TypeApplications, TypeOperators #-}
1+
{-# LANGUAGE DeriveGeneric, DeriveTraversable, DerivingVia, FlexibleContexts, FlexibleInstances, LambdaCase, OverloadedStrings, QuantifiedConstraints, RecordWildCards, ScopedTypeVariables, StandaloneDeriving, TypeApplications, TypeOperators #-}
22
module Analysis.Typecheck
33
( Monotype (..)
44
, Meta
@@ -30,6 +30,7 @@ import qualified Data.Map as Map
3030
import Data.Maybe (fromJust, fromMaybe)
3131
import Data.Name as Name
3232
import Data.Scope
33+
import Data.Semigroup (Last (..))
3334
import qualified Data.Set as Set
3435
import Data.Term
3536
import Data.Void
@@ -44,6 +45,9 @@ data Monotype f a
4445
| Record (Map.Map User (f a))
4546
deriving (Foldable, Functor, Generic1, Traversable)
4647

48+
-- FIXME: Union the effects/annotations on the operands.
49+
deriving via (Last (Term Monotype a)) instance Semigroup (Term Monotype a)
50+
4751
deriving instance (Eq a, forall a . Eq a => Eq (f a), Monad f) => Eq (Monotype f a)
4852
deriving instance (Ord a, forall a . Eq a => Eq (f a)
4953
, forall a . Ord a => Ord (f a), Monad f) => Ord (Monotype f a)

0 commit comments

Comments
 (0)