这是相当疯狂的编写代码。让我们尝试一块一块地解决它。
首先,t1
是一个类型的元组(a,b,c)
。让我们写下来t1 = (x,y,z)
,试着弄清楚。很清楚a
是String
和x
是"p1"
。
第二个组成部分是((take 2) . tail) mnr
,这是take 2 [1,2,3,4,5,6]
,这是[1,2]
。如此,如此。b
_ 说得通。[Int]
y
[1,2]
第三部分写得很奇怪。首先,
let no n = name in no
简单地定义了一个函数\n -> name
,即返回的常量函数name
。这写得更好const name
。这样你就有了构图(take 3) . words . (const name)
,然后你把它应用到"No"
. 嗯,(const name) "No"
显然只是name
,即"Max Mustermann"
。所以words
应用到 this is ["Max", "Mustermann"]
,然后take 3
得到前三个元素,这又是["Max", "Mustermann"]
。这就是z
上面,并表明它c
是[String]
.
总而言之,你最终t1
拥有 type(String, [Int], [String])
和 value ("p1", [1,2], ["Max", "Mustermann"])
。
应该清理第三个组件的代码,但是如何清理它取决于您以后真正想做的事情。然而,就目前而言,它非常复杂,只会让你和其他人感到困惑。