31 lines
551 B
Text
31 lines
551 B
Text
|
|
|
|
namespace Foo
|
|
|
|
initialize ref : IO.Ref Nat ← IO.mkRef 10
|
|
|
|
initialize vals : IO.Ref (Array String) ← IO.mkRef #[]
|
|
|
|
def registerVal (s : String) : IO Unit := do
|
|
if (← vals.get).contains s then
|
|
throw $ IO.userError "value already registered"
|
|
vals.modify (·.push s)
|
|
|
|
initialize
|
|
IO.println "started the program"
|
|
ref.modify (· + 20)
|
|
registerVal "hello"
|
|
|
|
initialize
|
|
registerVal "world"
|
|
|
|
initialize
|
|
registerVal "foo"
|
|
|
|
end Foo
|
|
open Foo
|
|
|
|
def main : IO Unit := do
|
|
IO.println "hello world"
|
|
IO.println (← ref.get)
|
|
IO.println (← vals.get)
|