mirror of
https://github.com/Reuh/anselme.git
synced 2025-10-27 08:39:30 +00:00
[stdlib] remove is callable, add can dispatch
Since whether something can be called or not depends on the arguments, according to the dispatch rules.
This commit is contained in:
parent
d04344e9ff
commit
b47e1940e9
3 changed files with 16 additions and 4 deletions
|
|
@ -34,19 +34,33 @@ return {
|
|||
},
|
||||
|
||||
{
|
||||
"call", "(func::is callable, args::is tuple)",
|
||||
"call", "(func, args::is tuple)",
|
||||
function(state, fn, args)
|
||||
return fn:call(state, args:to_argument_tuple())
|
||||
end
|
||||
},
|
||||
{
|
||||
"call", "(func::is callable, args::is tuple) = v",
|
||||
"call", "(func, args::is tuple) = v",
|
||||
function(state, fn, args, v)
|
||||
local argumenttuple = args:to_argument_tuple()
|
||||
argumenttuple:add_assignment(v)
|
||||
return fn:call(state, argumenttuple)
|
||||
end
|
||||
},
|
||||
{
|
||||
"can dispatch", "(func, args::is tuple)",
|
||||
function(state, fn, args)
|
||||
return Boolean:new(not not fn:dispatch(state, args:to_argument_tuple()))
|
||||
end,
|
||||
},
|
||||
{
|
||||
"can dispatch", "(func, args::is tuple) = v",
|
||||
function(state, fn, args, v)
|
||||
local argumenttuple = args:to_argument_tuple()
|
||||
argumenttuple:add_assignment(v)
|
||||
return Boolean:new(not not fn:dispatch(state, argumenttuple))
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
"_._", "(c::is function, s::is string)",
|
||||
|
|
|
|||
|
|
@ -60,7 +60,6 @@ return [[
|
|||
:@est un booléen = stdlib.is boolean
|
||||
:@est vrai = stdlib.is true
|
||||
:@est faux = stdlib.is false
|
||||
:@est appelable = stdlib.is callable
|
||||
:@est une fonction = stdlib.is function
|
||||
:@est une liste = stdlib.is list
|
||||
:@est un dictionnaire = stdlib.is map
|
||||
|
|
|
|||
|
|
@ -25,5 +25,4 @@ return [[
|
|||
|
||||
:@is function = is("function")
|
||||
:@is overload = is("overload")
|
||||
:@is callable = $(x) x!type == "overload" | x!type == "function" | x!type == "quote"
|
||||
]]
|
||||
Loading…
Add table
Add a link
Reference in a new issue