diff options
Diffstat (limited to 'core/builtin.moon')
| -rw-r--r-- | core/builtin.moon | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/core/builtin.moon b/core/builtin.moon index bd3183f..f9087c4 100644 --- a/core/builtin.moon +++ b/core/builtin.moon @@ -6,14 +6,14 @@ -- -- @module builtin import Action, Op, FnDef, Input, match from require 'core.base' -import Value, LiteralValue from require 'core.value' +import ValueStream, LiteralValue from require 'core.stream.value' import Result from require 'core.result' import Cell from require 'core.cell' import Scope from require 'core.scope' import Tag from require 'core.tag' import op_invoke from require 'core.invoke' -doc = Value.meta +doc = ValueStream.meta meta: name: 'doc' summary: "Print documentation in console." @@ -38,7 +38,7 @@ doc = Value.meta meta = result.value.meta L\print "(doc #{tail[1]}):\n#{format_meta meta}\n" -def = Value.meta +def = ValueStream.meta meta: name: 'def' summary: "Declare symbols in current scope." @@ -63,7 +63,7 @@ Define the symbols `sym1`, `sym2`, … to resolve to the values of `val-expr1`, Result :children -use = Value.meta +use = ValueStream.meta meta: name: 'use' summary: "Merge scopes into current scope." @@ -82,7 +82,7 @@ All arguments have to be evaltime constant." Result! -require_ = Value.meta +require_ = ValueStream.meta meta: name: 'require' summary: "Load a module." @@ -98,10 +98,10 @@ require_ = Value.meta name = result\const! L\trace @, "loading module #{name}" - scope = Value.wrap require "lib.#{name\unwrap 'str'}" + scope = ValueStream.wrap require "lib.#{name\unwrap 'str'}" Result :value -import_ = Value.meta +import_ = ValueStream.meta meta: name: 'import' summary: "Require and define modules." @@ -117,11 +117,11 @@ current scope." for child in *tail name = (child\quote scope)\unwrap 'sym' - value = Value.wrap require "lib.#{name}" + value = ValueStream.wrap require "lib.#{name}" scope\set name, Result :value -- (require "lib.#{name})\unwrap 'scope' Result! -import_star = Value.meta +import_star = ValueStream.meta meta: name: 'import*' summary: "Require and use modules." @@ -137,12 +137,12 @@ Requires modules `sym1`, `sym2`, … and merges them into the current scope." for child in *tail name = (child\quote scope)\unwrap 'sym' - value = Value.wrap require "lib.#{name}" + value = ValueStream.wrap require "lib.#{name}" scope\use value\unwrap 'scope' -- (require "lib.#{name}")\unwrap 'scope' Result! -fn = Value.meta +fn = ValueStream.meta meta: name: 'fn' summary: "Declare a function." @@ -163,13 +163,13 @@ function is invoked." param\quote scope body = body\quote scope - Result value: with Value.wrap FnDef param_symbols, body, scope + Result value: with ValueStream.wrap FnDef param_symbols, body, scope .meta = { summary: "(user defined function)" examples: { "(??? #{table.concat [p! for p in *param_symbols], ' '})" } } -defn = Value.meta +defn = ValueStream.meta meta: name: 'defn' summary: "Define a function." @@ -193,7 +193,7 @@ function is invoked." body = body\quote scope - value = with Value.wrap FnDef param_symbols, body, scope + value = with ValueStream.wrap FnDef param_symbols, body, scope .meta = :name summary: "(user defined function)" @@ -202,7 +202,7 @@ function is invoked." scope\set name, Result :value Result! -do_expr = Value.meta +do_expr = ValueStream.meta meta: name: 'do_expr' summary: "Evaluate multiple expressions in a new scope." @@ -215,7 +215,7 @@ Evaluate `expr1`, `expr2`, … and return the value of the last expression." scope = Scope scope Result children: [expr\eval scope for expr in *tail] -if_ = Value.meta +if_ = ValueStream.meta meta: name: 'if' summary: "Make an evaltime const choice." @@ -240,7 +240,7 @@ to `then-expr`, otherwise it is equivalent to `else-xpr` if given, or nil otherw elseif xelse xelse\eval scope -trace_ = Value.meta +trace_ = ValueStream.meta meta: name: 'trace!' summary: "Trace an expression's value at evaltime." @@ -254,7 +254,7 @@ trace_ = Value.meta with result = L\push tail[1]\eval, scope L\print "trace! #{tail[1]\stringify!}: #{result.value}" -trace = Value.meta +trace = ValueStream.meta meta: name: 'trace' summary: "Trace an expression's values at runtime." @@ -266,7 +266,7 @@ trace = Value.meta { prefix, value } = match 'str any', inputs super prefix: Input.cold prefix - value: Input.value value + value: Input.hot value tick: => L\print "trace #{@inputs.prefix!}: #{@inputs.value.stream}" @@ -278,7 +278,7 @@ trace = Value.meta tag = @tag\clone Tag.parse '-1' inner = Cell tag, { LiteralValue 'opdef', traceOp, 'trace' - Value.str tostring tail[1] + ValueStream.str tostring tail[1] tail[1] } inner\eval scope @@ -292,17 +292,17 @@ trace = Value.meta import: import_ 'import*': import_star - true: Value.meta + true: ValueStream.meta meta: name: 'true' summary: "The boolean constant `true`." - value: Value.bool true + value: ValueStream.bool true - false: Value.meta + false: ValueStream.meta meta: name: 'false' summary: "The boolean constant `false`." - value: Value.bool false + value: ValueStream.bool false :fn, :defn 'do': do_expr |
