これはかなり狂ったように書かれたコードです。少しずつ解決してみましょう。
まず、t1
タイプのタプルです(a,b,c)
。t1 = (x,y,z)
書いて、物事を理解してみましょう。それがであり、であるのa
はかなり明らかです。String
x
"p1"
2番目のコンポーネントは((take 2) . tail) mnr
、です。take 2 [1,2,3,4,5,6]
つまり、です[1,2]
。です、そしてb
です。理にかなっています。[Int]
y
[1,2]
3番目のコンポーネントは奇妙に書かれています。初めに、
let no n = name in no
単純に関数\n -> name
を定義します。つまり、定数関数はを返しname
ます。これは、よりうまく記述されていconst name
ます。つまり、構成(take 3) . words . (const name)
があり、それをに適用します"No"
。まあ、(const name) "No"
明らかにただname
、すなわち"Max Mustermann"
。したがって、これwords
に適用されるのは ["Max", "Mustermann"]
、でありtake 3
、最初の3つの要素を取得します。これもです["Max", "Mustermann"]
。それz
は上にあり、それがであることを示していc
ます[String]
。
全体として、t1
タイプ(String, [Int], [String])
と値を持つことになります("p1", [1,2], ["Max", "Mustermann"])
。
3番目のコンポーネントのコードはクリーンアップする必要がありますが、クリーンアップする方法は、実際に何をしたいかによって異なります。しかし、現在のところ、それは非常に複雑であり、あなたや他の人を混乱させるだけです。