remove main from Tour.newt since it is no longer required
This commit is contained in:
@@ -95,8 +95,9 @@ foo : Nat -> Nat -> Nat
|
|||||||
foo a b = ?
|
foo a b = ?
|
||||||
|
|
||||||
-- Newt compiles to javascript, there is a tab to the right that shows the
|
-- Newt compiles to javascript, there is a tab to the right that shows the
|
||||||
-- javascript output. It is not doing erasure (or inlining) yet, so the
|
-- javascript output. There is some erasure, but inlining is not being done
|
||||||
-- code is a little verbose.
|
-- yet. Dead code elimination will be done if there is a `main` function.
|
||||||
|
-- That is not the case in this file.
|
||||||
|
|
||||||
-- We can define native types, if the type is left off, it defaults to U
|
-- We can define native types, if the type is left off, it defaults to U
|
||||||
|
|
||||||
@@ -210,32 +211,3 @@ prod xs ys = do
|
|||||||
y <- ys
|
y <- ys
|
||||||
pure (x, y)
|
pure (x, y)
|
||||||
|
|
||||||
-- The playground is compiling to javascript and will give an error if
|
|
||||||
-- main isn't implemented, so I'll crib the definition of IO from
|
|
||||||
-- Prelude:
|
|
||||||
|
|
||||||
data Unit : U where
|
|
||||||
MkUnit : Unit
|
|
||||||
|
|
||||||
ptype World
|
|
||||||
|
|
||||||
data IORes : U -> U where
|
|
||||||
MkIORes : ∀ a. a -> World -> IORes a
|
|
||||||
|
|
||||||
IO : U -> U
|
|
||||||
IO a = World -> IORes a
|
|
||||||
|
|
||||||
instance Monad IO where
|
|
||||||
bind ma mab = \ w => case ma w of
|
|
||||||
MkIORes a w => mab a w
|
|
||||||
pure a = \ w => MkIORes a w
|
|
||||||
|
|
||||||
-- Here we declare `uses` to let the dead code elimination know we're poking
|
|
||||||
-- at MKIORes and MkUnit behind the compiler's back.
|
|
||||||
pfunc putStrLn uses (MkIORes MkUnit) : String -> IO Unit := `(s) => (w) => {
|
|
||||||
console.log(s)
|
|
||||||
return MkIORes(undefined,MkUnit,w)
|
|
||||||
}`
|
|
||||||
|
|
||||||
main : IO Unit
|
|
||||||
main = putStrLn "hello, world"
|
|
||||||
|
|||||||
Reference in New Issue
Block a user