This commit is contained in:
Leni Ven 2023-05-09 16:39:24 -07:00
parent 9bba78eb1d
commit 9a957bce35
1 changed files with 38 additions and 2 deletions

View File

@ -1,4 +1,40 @@
import Pantograph import Pantograph
import Lean.Data.Json
def main : IO Unit :=
IO.println s!"Hello, {hello}!" namespace Pantograph
structure State where
keys: Array String
-- State monad
abbrev T (m: Type → Type) := StateT State m
end Pantograph
open Pantograph
def execute (command: String): T (Except String) Lean.Json := do
let state ← get
let obj ← Lean.Json.parse command
return "success"
-- Main IO functions
unsafe def getLines : IO String := do
match (← (← IO.getStdin).getLine) with
| "" => pure ""
| "\n" => pure "\n"
| line => pure <| line ++ (← getLines)
unsafe def loop : T IO Unit := do
let state ← get
let command ← getLines
if command == "" then return ()
match (execute command).run' <| state with
| .error e => IO.println s!"Could not parse json: {e}"
| .ok obj => IO.println <| toString <| obj
unsafe def main : IO Unit :=
StateT.run' loop ⟨#[]⟩