我挣扎了一下用F#-assignment,我希望你能回答单纯的评价:我有F#记录,这
我们将使用声明的类型
OrderedList<’a>
如下
type OrderedList<’a when ’a : equality> =
{ front: ’a list
; rear: ’a list}
例如,值
let ex = {front = [’x’]; rear = [’z’;’y’]}
有 型OrderedList<char>
和代表有序列表[’x’, ’y’, ’z’]
。
我正在挣扎的问题是:
我们定义一个有序列表的规范表示是 表示,其中后列表为空。声明函数
canonical:OrderedList<’a>->OrderedList<’a>
,其中canonical ol
返回ol
的标准表示形式。
就像一启动,我试过的东西:
let canonicial (list:OrderedList<'a>)=
match list with
| {x::xs}, {y::xss} -> if x = y then "SUCCESS!!!!" else failwith "FEJL!!!"
| _ -> failwith "Some"
我的问题是,我不知道怎么去的元素类型/语法此。我知道这个函数没有被正确解决,但现在我主要关注语法。
希望得到一些帮助!
你读过关于模式匹配的msdn文档吗? –
是的,我似乎无法弄清楚。:( – user3408128
重读有资格的'记录模式'部分 –