From 7251f1ba60abed8ba7e1b069bc59a66422475a59 Mon Sep 17 00:00:00 2001 From: David Ashby Date: Sat, 20 Feb 2021 18:15:09 -0500 Subject: [PATCH] NEGATE/MAX/MIN implemented in forth, not builtins --- main.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index d55857c..05da1fc 100644 --- a/main.go +++ b/main.go @@ -43,7 +43,10 @@ func main() { dict.AddWord("/MOD", Word{Name: "/MOD", Impl: b.DivMod(&stack)}) dict.AddWord("+1", Word{Name: "+1", Source: []string{"1", "+"}}) dict.AddWord("-1", Word{Name: "-1", Source: []string{"1", "-"}}) - dict.AddWord("ABS", Word{Name: "ABS", Source: []string{"DUP 0< IF DUP DUP - SWAP - THEN"}}) + dict.AddWord("ABS", Word{Name: "ABS", Source: []string{"DUP", "0<", "IF", "NEGATE", "THEN"}}) + dict.AddWord("NEGATE", Word{Name: "NEGATE", Source: []string{"DUP", "DUP", "-", "SWAP", "-"}}) + dict.AddWord("MAX", Word{Name: "MAX", Source: []string{"OVER", "OVER", "<", "IF", "SWAP", "THEN", "DROP"}}) + dict.AddWord("MIN", Word{Name: "MIN", Source: []string{"OVER", "OVER", ">", "IF", "SWAP", "THEN", "DROP"}}) // output dict.AddWord(".", Word{Name: ".", Impl: b.Print(os.Stdout, &stack)}) dict.AddWord("EMIT", Word{Name: "EMIT", Impl: b.Emit(os.Stdout, &stack)})