1
1
mirror of https://github.com/github/semantic.git synced 2024-11-28 10:15:55 +03:00
This commit is contained in:
Patrick Thomson 2019-07-06 10:52:38 -04:00
parent 40a8e6d418
commit f401f75303
15 changed files with 43 additions and 33 deletions

View File

@ -5,6 +5,16 @@ jobs: $ncpus
package semantic package semantic
ghc-options: +RTS -A128m -n2m -RTS ghc-options: +RTS -A128m -n2m -RTS
source-repository-package
type: git
location: https://github.com/fused-effects/fused-effects.git
tag: fa8694da51698d1f0a7176816550457ae1067497
source-repository-package
type: git
location: https://github.com/fused-effects/fused-effects-exceptions.git
tag: 57b1dc8b5deadbe741ce22398d836a14dbba7577
source-repository-package source-repository-package
type: git type: git
location: https://github.com/joshvera/proto3-suite.git location: https://github.com/joshvera/proto3-suite.git

View File

@ -40,7 +40,7 @@ library
, containers ^>= 0.6 , containers ^>= 0.6
, directory ^>= 1.3 , directory ^>= 1.3
, filepath ^>= 1.4 , filepath ^>= 1.4
, fused-effects ^>= 0.4 , fused-effects ^>= 0.5
, haskeline ^>= 0.7.5 , haskeline ^>= 0.7.5
, parsers ^>= 0.12.10 , parsers ^>= 0.12.10
, prettyprinter ^>= 1.2.1 , prettyprinter ^>= 1.2.1

View File

@ -55,8 +55,8 @@ common dependencies
, fastsum ^>= 0.1.1.0 , fastsum ^>= 0.1.1.0
, filepath ^>= 1.4.2.1 , filepath ^>= 1.4.2.1
, free ^>= 5.1 , free ^>= 5.1
, fused-effects ^>= 0.4.0.0 , fused-effects ^>= 0.5.0.0
, fused-effects-exceptions ^>= 0.1.1.0 , fused-effects-exceptions ^>= 0.2.0.0
, hashable ^>= 1.2.7.0 , hashable ^>= 1.2.7.0
, tree-sitter ^>= 0.1.0.0 , tree-sitter ^>= 0.1.0.0
, mtl ^>= 2.2.2 , mtl ^>= 2.2.2

View File

@ -420,7 +420,7 @@ reachable roots heap = go mempty roots
data Deref value (m :: * -> *) k data Deref value (m :: * -> *) k
= DerefCell (Set value) (Maybe value -> k) = DerefCell (Set value) (Maybe value -> k)
| AssignCell value (Set value) (Set value -> k) | AssignCell value (Set value) (Set value -> k)
deriving stock Functor deriving stock (Functor, Generic1)
deriving anyclass (HFunctor, Effect) deriving anyclass (HFunctor, Effect)
runDeref :: Evaluator term address value (DerefC address value m) a runDeref :: Evaluator term address value (DerefC address value m) a

View File

@ -64,7 +64,7 @@ data Modules address value (m :: * -> *) k
| Lookup ModulePath (Maybe (ModuleResult address value) -> k) | Lookup ModulePath (Maybe (ModuleResult address value) -> k)
| Resolve [FilePath] (Maybe ModulePath -> k) | Resolve [FilePath] (Maybe ModulePath -> k)
| List FilePath ([ModulePath] -> k) | List FilePath ([ModulePath] -> k)
deriving stock Functor deriving stock (Functor, Generic1)
deriving anyclass (HFunctor, Effect) deriving anyclass (HFunctor, Effect)

View File

@ -380,7 +380,7 @@ alloc = send . flip Alloc pure
data Allocator address (m :: * -> *) k data Allocator address (m :: * -> *) k
= Alloc Name (address -> k) = Alloc Name (address -> k)
deriving stock Functor deriving stock (Functor, Generic1)
deriving anyclass (HFunctor, Effect) deriving anyclass (HFunctor, Effect)
runAllocator :: Evaluator term address value (AllocatorC address m) a runAllocator :: Evaluator term address value (AllocatorC address m) a

View File

@ -129,7 +129,7 @@ data Function term address value (m :: * -> *) k
| BuiltIn address BuiltIn (value -> k) -- ^ A built-in is parameterized by its parent scope, BuiltIn type, and returns a value. | BuiltIn address BuiltIn (value -> k) -- ^ A built-in is parameterized by its parent scope, BuiltIn type, and returns a value.
| Call value [value] (value -> k) -- ^ A Call takes a set of values as parameters and returns a ValueRef. | Call value [value] (value -> k) -- ^ A Call takes a set of values as parameters and returns a ValueRef.
| Bind value value (value -> k) | Bind value value (value -> k)
deriving stock Functor deriving stock (Functor, Generic1)
deriving anyclass (HFunctor, Effect) deriving anyclass (HFunctor, Effect)
@ -156,7 +156,7 @@ ifthenelse v t e = asBool v >>= \ c -> if c then t else e
data Boolean value (m :: * -> *) k data Boolean value (m :: * -> *) k
= Boolean Bool (value -> k) = Boolean Bool (value -> k)
| AsBool value (Bool -> k) | AsBool value (Bool -> k)
deriving stock Functor deriving stock (Functor, Generic1)
deriving anyclass (HFunctor, Effect) deriving anyclass (HFunctor, Effect)
runBoolean :: Evaluator term address value (BooleanC value m) a runBoolean :: Evaluator term address value (BooleanC value m) a
@ -224,7 +224,7 @@ unit = send (Unit pure)
newtype Unit value (m :: * -> *) k newtype Unit value (m :: * -> *) k
= Unit (value -> k) = Unit (value -> k)
deriving stock Functor deriving stock (Functor, Generic1)
instance HFunctor (Unit value) where instance HFunctor (Unit value) where
hmap _ = coerce hmap _ = coerce
@ -252,7 +252,7 @@ asString v = send (AsString v pure)
data String value (m :: * -> *) k data String value (m :: * -> *) k
= String Text (value -> k) = String Text (value -> k)
| AsString value (Text -> k) | AsString value (Text -> k)
deriving stock Functor deriving stock (Functor, Generic1)
deriving anyclass (HFunctor, Effect) deriving anyclass (HFunctor, Effect)
newtype StringC value m a = StringC { runStringC :: m a } newtype StringC value m a = StringC { runStringC :: m a }
@ -300,7 +300,7 @@ data Numeric value (m :: * -> *) k
| Rational Rational (value -> k) | Rational Rational (value -> k)
| LiftNumeric (forall a . Num a => a -> a) value (value -> k) | LiftNumeric (forall a . Num a => a -> a) value (value -> k)
| LiftNumeric2 (forall a b. Number a -> Number b -> SomeNumber) value value (value -> k) | LiftNumeric2 (forall a b. Number a -> Number b -> SomeNumber) value value (value -> k)
deriving stock Functor deriving stock (Functor, Generic1)
deriving anyclass (HFunctor, Effect) deriving anyclass (HFunctor, Effect)
newtype NumericC value m a = NumericC { runNumericC :: m a } newtype NumericC value m a = NumericC { runNumericC :: m a }
@ -344,7 +344,7 @@ data Bitwise value (m :: * -> *) k
| LiftBitwise (forall a . Bits a => a -> a) value (value -> k) | LiftBitwise (forall a . Bits a => a -> a) value (value -> k)
| LiftBitwise2 (forall a . (Integral a, Bits a) => a -> a -> a) value value (value -> k) | LiftBitwise2 (forall a . (Integral a, Bits a) => a -> a -> a) value value (value -> k)
| UnsignedRShift value value (value -> k) | UnsignedRShift value value (value -> k)
deriving stock Functor deriving stock (Functor, Generic1)
deriving anyclass (HFunctor, Effect) deriving anyclass (HFunctor, Effect)
runBitwise :: Evaluator term address value (BitwiseC value m) a runBitwise :: Evaluator term address value (BitwiseC value m) a
@ -372,7 +372,7 @@ data Object address value (m :: * -> *) k
= Object address (value -> k) = Object address (value -> k)
| ScopedEnvironment value (Maybe address -> k) | ScopedEnvironment value (Maybe address -> k)
| Klass Declaration address (value -> k) | Klass Declaration address (value -> k)
deriving stock Functor deriving stock (Functor, Generic1)
deriving anyclass (HFunctor, Effect) deriving anyclass (HFunctor, Effect)
newtype ObjectC address value m a = ObjectC { runObjectC :: m a } newtype ObjectC address value m a = ObjectC { runObjectC :: m a }
@ -393,7 +393,7 @@ asArray v = send (AsArray v pure)
data Array value (m :: * -> *) k data Array value (m :: * -> *) k
= Array [value] (value -> k) = Array [value] (value -> k)
| AsArray value ([value] -> k) | AsArray value ([value] -> k)
deriving stock Functor deriving stock (Functor, Generic1)
deriving anyclass (HFunctor, Effect) deriving anyclass (HFunctor, Effect)
newtype ArrayC value m a = ArrayC { runArrayC :: m a } newtype ArrayC value m a = ArrayC { runArrayC :: m a }
@ -415,7 +415,7 @@ kvPair v1 v2 = send (KvPair v1 v2 pure)
data Hash value (m :: * -> *) k data Hash value (m :: * -> *) k
= Hash [(value, value)] (value -> k) = Hash [(value, value)] (value -> k)
| KvPair value value (value -> k) | KvPair value value (value -> k)
deriving stock Functor deriving stock (Functor, Generic1)
deriving anyclass (HFunctor, Effect) deriving anyclass (HFunctor, Effect)
newtype HashC value m a = HashC { runHashC :: m a } newtype HashC value m a = HashC { runHashC :: m a }

View File

@ -13,12 +13,12 @@ import Control.Effect.Reader
import Control.Effect.Sum import Control.Effect.Sum
data Interpose eff m k data Interpose eff m k
= forall a . Interpose (m a) (forall n x . eff n (n x) -> m x) (a -> k) = forall a . Interpose (m a) (forall n x . eff n (n x) -> m x) (a -> m k)
deriving instance Functor (Interpose eff m) deriving instance Functor m => Functor (Interpose eff m)
instance HFunctor (Interpose eff) where instance HFunctor (Interpose eff) where
hmap f (Interpose m h k) = Interpose (f m) (f . h) k hmap f (Interpose m h k) = Interpose (f m) (f . h) (f . k)
-- | Respond to requests for some specific effect with a handler. -- | Respond to requests for some specific effect with a handler.
-- --
@ -48,7 +48,7 @@ runListener (Listener listen) = listen
instance (Carrier sig m, Member eff sig) => Carrier (Interpose eff :+: sig) (InterposeC eff m) where instance (Carrier sig m, Member eff sig) => Carrier (Interpose eff :+: sig) (InterposeC eff m) where
eff (L (Interpose m h k)) = eff (L (Interpose m h k)) =
InterposeC (local (const (Just (Listener h))) (runInterposeC m)) >>= k InterposeC (local (const (Just (Listener h))) (runInterposeC m)) >>= _ k
eff (R other) = do eff (R other) = do
listener <- InterposeC ask listener <- InterposeC ask
case (listener, prj other) of case (listener, prj other) of

View File

@ -18,9 +18,9 @@ import System.Console.Haskeline
import qualified Data.Text as T import qualified Data.Text as T
data REPL (m :: * -> *) k data REPL (m :: * -> *) k
= Prompt Text (Maybe Text -> k) = Prompt Text (Maybe Text -> m k)
| Output Text k | Output Text (m k)
deriving stock Functor deriving stock (Functor, Generic1)
deriving anyclass (HFunctor, Effect) deriving anyclass (HFunctor, Effect)
prompt :: (Member REPL sig, Carrier sig m) => Text -> m (Maybe Text) prompt :: (Member REPL sig, Carrier sig m) => Text -> m (Maybe Text)

View File

@ -36,7 +36,7 @@ data Diff term1 term2 diff (m :: * -> *) k
| Insert term2 (diff -> k) | Insert term2 (diff -> k)
-- | Replace one term with another. -- | Replace one term with another.
| Replace term1 term2 (diff -> k) | Replace term1 term2 (diff -> k)
deriving stock Functor deriving stock (Functor, Generic1)
deriving anyclass (HFunctor, Effect) deriving anyclass (HFunctor, Effect)
newtype Algorithm term1 term2 diff m a = Algorithm { runAlgorithm :: m a } newtype Algorithm term1 term2 diff m a = Algorithm { runAlgorithm :: m a }

View File

@ -39,9 +39,9 @@ distributeFoldMap toTask inputs = fmap fold (distribute (fmap toTask inputs))
-- | Distribute effects run tasks concurrently. -- | Distribute effects run tasks concurrently.
data Distribute m k data Distribute m k
= forall a . Distribute (m a) (a -> k) = forall a . Distribute (m a) (a -> m k)
deriving instance Functor (Distribute m) deriving instance Functor m => Functor (Distribute m)
instance HFunctor Distribute where instance HFunctor Distribute where
hmap f (Distribute m k) = Distribute (f m) k hmap f (Distribute m k) = Distribute (f m) k

View File

@ -46,7 +46,7 @@ resolutionMap Project{..} = case projectLanguage of
data Resolution (m :: * -> *) k data Resolution (m :: * -> *) k
= NodeJSResolution FilePath Text [FilePath] (Map FilePath FilePath -> k) = NodeJSResolution FilePath Text [FilePath] (Map FilePath FilePath -> k)
| NoResolution (Map FilePath FilePath -> k) | NoResolution (Map FilePath FilePath -> k)
deriving stock Functor deriving stock (Functor, Generic1)
deriving anyclass (HFunctor, Effect) deriving anyclass (HFunctor, Effect)
runResolution :: ResolutionC m a -> m a runResolution :: ResolutionC m a -> m a

View File

@ -50,10 +50,10 @@ data Excludes
-- | An effect to read/write 'Blob's from 'Handle's or 'FilePath's. -- | An effect to read/write 'Blob's from 'Handle's or 'FilePath's.
data Files (m :: * -> *) k data Files (m :: * -> *) k
= forall a . Read (Source a) (a -> k) = forall a . Read (Source a) (a -> m k)
| ReadProject (Maybe FilePath) FilePath Language [FilePath] (Project -> k) | ReadProject (Maybe FilePath) FilePath Language [FilePath] (Project -> m k)
| FindFiles FilePath [String] [FilePath] ([FilePath] -> k) | FindFiles FilePath [String] [FilePath] ([FilePath] -> m k)
| Write Destination B.Builder k | Write Destination B.Builder (m k)
deriving instance Functor (Files m) deriving instance Functor (Files m)
instance HFunctor Files instance HFunctor Files

View File

@ -139,7 +139,7 @@ time' = withTiming'
data Telemetry (m :: * -> *) k data Telemetry (m :: * -> *) k
= WriteStat Stat k = WriteStat Stat k
| WriteLog Level String [(String, String)] k | WriteLog Level String [(String, String)] k
deriving stock Functor deriving stock (Functor, Generic1)
deriving anyclass (HFunctor, Effect) deriving anyclass (HFunctor, Effect)
-- | Run a 'Telemetry' effect by expecting a 'Reader' of 'Queue's to write stats and logs to. -- | Run a 'Telemetry' effect by expecting a 'Reader' of 'Queue's to write stats and logs to.

View File

@ -26,9 +26,9 @@ timeout n = send . flip (Timeout n) pure
-- | 'Timeout' effects run other effects, aborting them if they exceed the -- | 'Timeout' effects run other effects, aborting them if they exceed the
-- specified duration. -- specified duration.
data Timeout m k data Timeout m k
= forall a . Timeout Duration (m a) (Maybe a -> k) = forall a . Timeout Duration (m a) (Maybe a -> m k)
deriving instance Functor (Timeout m) deriving instance Functor m => Functor (Timeout m)
instance HFunctor Timeout where instance HFunctor Timeout where
hmap f (Timeout n task k) = Timeout n (f task) k hmap f (Timeout n task k) = Timeout n (f task) k