javascriptで機能的および再帰的なデータ型を構築するにはどうすればよいですか?
私は何かMLのようなことができるようにしたいと思います:
datatype binary_node = Node of binary_node*binary_node
| Lead of int
しばらく前に、私は関数型プログラミングのコースを受講しました。コースは、何らかのランダムな理由でSchemeで行われ、データ型の名前から始まり、次に「ペイロード」で始まるテーブルを作成してデータ型を構築しました。 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でこれを行う最も賢い方法は何ですか?