如何在 javascript 中构造函数和递归数据类型?
我希望能够做一些 ML 之类的事情:
datatype binary_node = Node of binary_node*binary_node
| Lead of int
前段时间我参加了一门函数式编程课程——出于某种随机原因,该课程是在 Scheme 中,我们通过制作 tubles 来构造数据类型,从数据类型的名称开始,然后是“有效负载”,这是在 Javascript 中执行函数式编程风格的数据类型的方法?
construct_node(n1,n2) ->
("Node", n1, n2).
construct_leaf(int_value) ->
("Leaf", int_value).
然后是类型检查器:
is_node(n) ->
if (n[0] == "Node") ->
is_binary_tree(n[1]) and is_binary_tree(n[2])
else
false
is_leaf(l) ->
if(l[0] == "Leaf") ->
is_integer(n[1])
else
false
is_binary_tree(t) ->
is_node(t) or is_leaf(t)
在 javascript 中执行此操作的最聪明的方法是什么?