小编huf*_*ola的帖子

在 F# 中添加两个元组

试图理解 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# tuples

2
推荐指数
1
解决办法
115
查看次数

了解具有指定数据类型的尾递归

所以我对递归的理解相对较好,但是在 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)

recursion f# algebraic-data-types

1
推荐指数
1
解决办法
75
查看次数

标签 统计

f# ×2

algebraic-data-types ×1

recursion ×1

tuples ×1