试图理解 F# 中的元组..
目前的思考过程
let add tuples a b =
let a = (_,_)
let b= (_,_)
(a+b)
Run Code Online (Sandbox Code Playgroud)
由于“_”对这种情况无效,这将不起作用,所以我想尝试
let add tuples a b =
let a = (c,d)
let b = (e,f)
fst a + fst b, snd a + snd b;;
Run Code Online (Sandbox Code Playgroud)
这是行不通的,因为 c,d,e,&f 不是已知变量。在 Java 中,我传统上只会初始化该变量,以便可以使用它,但在 F# 中,这似乎有点时髦,let a= int 甚至不确定这是否可行
任何试图解决我的思维过程的帮助将不胜感激。谢谢
编辑:
预期结果
a (1,3) b (2,4) 返回 (3,7)
所以我对递归的理解相对较好,但是在 F# 中能够创建自己的数据类型集,我不明白如何编写一个函数来引用该特定场景。谢谢你的帮助
type 'element mylist = PEANUT | BUTTER of 'element * 'element mylist
Run Code Online (Sandbox Code Playgroud)
let exampleList = BUTTER (1, BUTTER (2, BUTTER (3, PEANUT)))
Run Code Online (Sandbox Code Playgroud)
试图编写一个反转这个列表的尾递归函数?
这是我传统的写法
let rec helper a b =
match a with
| [] -> b
| h::t -> helper t (h::b)
let rev L = helper L []
Run Code Online (Sandbox Code Playgroud)
现在这是我一直在尝试的:
let rec tailrevMylist a L =
match a with
| [] -> []
| PEANUT::t -> tailrevMylist t (BUTTER::L)
let revMylist L =
tailrevMylist L [] …Run Code Online (Sandbox Code Playgroud)