我是 F# 语言的新手,我的专业背景主要是 C#/SharePoint,最近我参加了 Haskell 课程,这是一种可爱的函数式语言。
我的问题是关于类型别名(同义词)和函数签名的使用,在 Haskell 中是一种很好且直接的方法,如下所示:
type Person = (String,Int)
type Address = (Person, String,Int)
getPerson :: Address -> Person
getPerson n = first n ...
当我在 F# 中尝试相同的方法时,我有点失败:
type Person = (int,int)
type Address = (Person, String, Int)
let getPerson (n:Address) =
n.first ...
我做错了什么?或者当我有带有签名 (int, int) -> String -> int -> String -> (int, int) 的函数时,提高可读性的最佳实践是什么?
下面的解决方案等同于上面提到的 Haskell 类型同义词:
type Person = int*int
type Address = Person * string * int
let first (n,_,_) = n
let getPerson (n:Address) : Person =
first n