Start using class instances instead of GADT constructors

Maybe makes more sense here?
Šī revīzija ir iekļauta:
2024-09-21 17:37:37 +02:00
vecāks 124d9fa4d8
revīzija 6a2a87cfc3
3 mainīti faili ar 9 papildinājumiem un 4 dzēšanām

Parādīt failu

@@ -75,8 +75,8 @@ genDependency g = do
inject :: Show a => a -> ComputationM ta a
inject x = genDependency (Dependency NoToken (TInject x))
runIO :: (Show a, Show b) => FunctionIO a b -> Token t a -> ComputationM TokenNotTraversable b
runIO f input = genDependency (Dependency input (FIO f))
runIO :: (Show a, Show b, IsFIO f a b) => f -> Token t a -> ComputationM TokenNotTraversable b
runIO f input = genDependency (Dependency input (FIO' f))
makeTraversable :: Token TokenNotTraversable [a] -> Token TokenTraversable (Token TokenNotTraversable a)
makeTraversable (Token n) = Token n

Parādīt failu

@@ -34,3 +34,8 @@ data ListDirectory' = ListDirectory'
deriving (Show)
instance IsFIO ListDirectory' FilePath [FilePath] where
runFIO ListDirectory' path = undefined
data OpenImage' = OpenImage'
deriving (Show)
instance IsFIO OpenImage' FilePath Image where
runFIO OpenImage' path = undefined

Parādīt failu

@@ -6,9 +6,9 @@ import ComputationM
test :: ComputationM TokenNotTraversable ()
test = do
dir <- inject "retter"
dirContents <- runIO ListDirectory dir
dirContents <- runIO ListDirectory' dir
let dirContents' = makeTraversable dirContents
u <- mapM (runIO OpenImage) dirContents'
u <- mapM (runIO OpenImage') dirContents'
pure $ NoToken
main :: IO ()