Я пытаюсь научить себя F #, портируя некоторый код на Haskell.
В частности, я пытаюсь перенести показанную проблему отсчета здесь
Код Хаскелла указан здесь
Я пытаюсь создать следующие типы Haskell в F #:
data Op = Add | Sub | Mul | Div
data Expr = Val Int | App Op Expr Expr
В F # я думаю, что тип Op определяется следующим образом:
type Op = | Add | Sub | Mul | Div
У меня проблемы с типом Expr.
Как создать рекурсивный тип? Из этого SO вопроса похоже, что нельзя создать тип Expr в F #.
Кроме того, что является эквивалентом типа F # типа «App», который применяется с типом Op к типу Expr.
Если невозможно напрямую портировать этот код, может кто-нибудь предложить альтернативную структуру данных.