Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://anggtwu.net/LEAN/luatree.lean.html -- http://anggtwu.net/LEAN/luatree.lean -- (find-angg "LEAN/luatree.lean") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- Superseded by: -- (find-angg "LEAN/luatree1.lean") -- -- (defun e () (interactive) (find-angg "LEAN/luatree.lean")) -- -- (find-angg "LEAN/luatree.lean") -- (find-fplean4page 71 "def twice (action : IO Unit) : IO Unit") -- (find-fplean4text 71 "def twice (action : IO Unit) : IO Unit") -- (find-fplean4page 79 "Worked Example: cat") -- (find-fplean4text 79 "Worked Example: cat") -- (find-fplean4page 164 "The Monad Type Class") -- (find-fplean4text 164 "The Monad Type Class") -- (find-fplean4page 165 "General Monad Operations") -- (find-fplean4text 165 "General Monad Operations") -- Local Variables: -- coding: utf-8-unix -- End: -- (find-anggfile "luatree/luatree.lua" "[0]=") -- (find-anggfile "luatree/luatree.lua" "-- Process stdin:") -- (find-angg "LUA/GetOpt1.lua") -- strings, concat, add quotes, namespace, -- import IO.Process -- (find-anggfile "LEAN/overloaded1.lean") -- (find-angg "LEAN/ioprocess1.lean") -- (find-es "lean" "instance") -- Index: -- «.zconcat» (to "zconcat") -- «.ToLuaTree» (to "ToLuaTree") ----------------------------- -- «zconcat» (to ".zconcat") def q s := "\"" ++ s ++ "\"" def zq s := "[0]=\"" ++ s ++ "\"" def br s := "{" ++ s ++ "}" def ac s := ", " ++ s def myconcat0 := List.foldl String.append "" def acs (ss : List String) : String := myconcat0 (List.map ac ss) def zacs (head : String) (ss : List String) : String := br ((zq head) ++ (acs ss)) def zconcat := zacs #check List.map #check List.map ac #check List.map ac ["a", "b", "c"] #eval List.map ac ["a", "b", "c"] #eval myconcat0 ["a", "b", "c"] #eval myconcat0 (List.map ac ["a", "b", "c"]) #eval acs ["a", "b", "c"] #eval zacs "foo" ["a", "b", "c"] #eval zconcat "foo" ["a", "b", "c"] -- (find-lean4prefile "Init/Prelude.lean" "def List.foldl") --------------------------------- -- «ToLuaTree» (to ".ToLuaTree") #eval toString 42 class ToLuaTree (α : Type) where toLuaTree0 : α → String instance : ToLuaTree String where toLuaTree0 s := q s instance : ToLuaTree Nat where toLuaTree0 n := toString n instance : ToLuaTree Int where toLuaTree0 n := toString n #check ToLuaTree #check ToLuaTree.toLuaTree0 #eval ToLuaTree.toLuaTree0 "foo" #eval ToLuaTree.toLuaTree0 42 #eval ToLuaTree.toLuaTree0 (42 : Int) #check 42 #check toString 42 ---------------------------------------- open String def f (_ : Nat) (_ : Nat) : Nat := 4 #print f #check f -- #eval f 2 #eval append "Hello, " "Lean!" #print List def main : IO Unit := IO.println "Hello, world!\nfoo" #eval main -- (find-es "lean" "def") -- (find-es "lean" "fun") -- (find-es "lean" "inductive") inductive mytree where | um (str : String) : mytree | dois (head : String) (a b : mytree) : mytree deriving Repr #check mytree.um #check mytree.um "foo" #eval mytree.um "foo" def foo := 42 def mt1 := mytree.um "foo" def t1 : mytree := mytree.um "foo" -- (find-es "lean" "string-interpolation") -- (find-es "lean" "let") def mytree.tostring (o : mytree) : String := match o with | mytree.um s => q s | mytree.dois a b c => zconcat a [b.tostring, c.tostring] #eval (mytree.um "a").tostring #eval (mytree.dois "a" (mytree.um "b") (mytree.um "c")).tostring #check repr #check reprStr #eval reprStr 42 /- | (find-elan4leanfile "Lean/") | (find-lean4file "doc/") | (find-lean4file "doc/tour.md") | (find-angg ".emacs.papers" "fplean4") * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) lean --run luatree.lean lean -q --run luatree.lean lean -/ -- Local Variables: -- coding: utf-8-unix -- End: