[英]Haskell to F# - declare a recursive types in f#
我試圖通過移植一些Haskell代碼來教我自己的F#。
特別是我試圖移植這里顯示的倒計時問題
我試圖在F#中創建以下Haskell類型:
data Op = Add | Sub | Mul | Div
data Expr = Val Int | App Op Expr Expr
在F#中我認為Op類型定義如下:
type Op = | Add | Sub | Mul | Div
我遇到了Expr類型的問題。
如何創建遞歸類型? 從這個SO問題看起來,人們無法在F#中創建Expr類型。
還有什么是'App'類型的F#等價物,它將Op類型應用於Expr類型。
如果無法直接移植此代碼,有人可能會建議替代數據結構。
定義像這樣的遞歸類型不是問題; 你不能做的是創建更高級的類型,它們在類型構造函數上進行參數化(這個例子不需要它)。 對於任何聯合類型定義,您需要使用關鍵字“of”將構造函數名稱與構造函數參數分開,並且參數本身應采用元組類型的形式(即它們應以星號分隔):
type Op = Add | Sub | Mul | Div
type Expr = Val of int | App of Op * Expr * Expr
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.