создать тип с помощью конструктора, который принимает строку и список - PullRequest
0 голосов
/ 06 ноября 2019

Я хочу расширить тип ExprTree (дерево выражений) с помощью нового конструктора App, который принимает строку и список в качестве аргументов. Ниже приведен тип ExprTree:

type ExprTree =
    | Const of int
    | Ident of string
    | Sum of ExprTree * ExprTree
    | Let of string * ExprTree * ExprTree

1 Ответ

1 голос
/ 06 ноября 2019

Определение, которое вы разместили в комментарии, является правильным. Ваша версия из комментариев была:

type ExprTree =
    | Const of int
    | Ident of string
    | Sum of ExprTree * ExprTree
    | Let of string * ExprTree * ExprTree
    | App of string * ((ExprTree) list)

Определение конструктора App содержит некоторые ненужные скобки - вам не нужны никакие и вы можете написать только string * ExprTree list, но они не повредят ни одному из них. Я подозреваю, что проблема была не в определении, а в том, как вы используете конструктор. Вот правильный синтаксис:

App("foo", [Const 1; Ident "x"])
...