如果我在F#中有一个自定义的列表类型,如何获取该类型列表的开头和结尾

本杰明·克里姆

我在F#中有一个自定义列表,例如:

type 'element mylist = NIL | CONS of 'element * 'element mylist

我想使用类似的方法来反转此类型的列表

let rec helperOld a b =
    match a with
    | [] -> b
    | h::t -> helperOld t (h::b)

let revOld L = helperOld L []

到目前为止,我一直想做的是做类似的事情

let rec helper a b = 
    match a with
    | NIL -> b
    | CONS(a, b) -> helper //tail of a, head of a cons b

但是我在弄清楚如何获得a的尾巴和头上遇到麻烦。标准的a.Head和a.Tail不起作用。如何访问此自定义列表中的那些元素?

乍得·吉尔伯特

您的辅助函数不需要使用Head或Tail函数,因为它可以通过模式匹配来提取这些值:

let rec helper a b = 
    match a with
    | NIL -> b
    | CONS(x, xs) -> helper xs (CONS(x, b))

由于您具有自定义列表定义,因此标准的“头尾”功能不起作用。您可以使用模式匹配来创建自己的函数,该模式与您沿途走的路线相似:

let myHead xs =
    match xs with
    | NIL -> None
    | CONS(h, _) -> Some(h)

let myTail xs =
    match xs with
    | NIL -> None
    | CONS(_, t) -> Some(t)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何遍历自定义类型列表并从另一个列表替换一个属性?

当自定义类型帖子与另一个自定义类型帖子有连接时,如何获取自定义类型帖子数据?

浏览自定义类型列表并返回第一个对象,该成员的某个成员以字母“ x”开头

具有自定义类型的列表

Java的地图 - 如何获取自定义对象的列表作为一个单独的列表

如何调用其中有一个自定义的复杂对象类型作为从Java输入参数一个Oracle PL-SQL过程

使我的自定义列表类返回“列表”作为类型

从自定义类型F#列表中过滤不同的值

如果我有一个定义为字符串常量的类型,为什么不能将该类型传递给实际的字符串呢?

如何在F#中为自定义类型定义一元减号?

f#自定义链接列表和引用

我应该如何声明一个类类型列表?

如何定义不是列表的自定义插槽类型?

如何在我的自定义适配器中为我的列表视图获取一个按钮来拨打电话号码

Unity-如何创建自定义编辑器以动态更改另一个具有自定义大小的列表中列表的大小?

SQL,获取所有自定义数据类型的列表

C#-一个列表中有多个泛型类型

如何将sum用于自定义类型列表?

通过使用一个类别显示所有帖子和自定义帖子类型

如何使用自定义条件对一个列表列表进行排序?

如何使用jquery在另一个列表的开头/结尾追加列表项?

我可以有一个泛型类型绑定,要求该类型是特征吗?

如何使用 Java 8 合并两个不同类型的自定义对象列表

如何在 C# 中合并两个自定义类型列表

如何使用Apache Kafka在Spring Boot中使用和保存自定义类型列表?

如何搜索自定义对象类型数组列表?什么是最好和最快的方法

如何使用公式从Excel中的自定义列表中获取下一个值

制作一个自定义类型的帖子

如果我组合了自定义列并在该列中有一个条件,则 MS Access 查询需要用户输入参数