私は実際に何をこの質問と呼ぶべきか分かりません。提示されたタイトルは私が思いつくことができる最高でした。Scalaの型エイリアシング
私たちは現在、学校でScalaの関数型プログラミングに取り組んでいます。私はよく慣れ親しんでいるものの中で何かが意味をなさないケースがいくつかあります。 :
type Rand[+A] = RNG => (A, RNG)
val int: Rand[Int] = _.nextInt
def unit[A](a: A): Rand[A] =
rng => (a, rng)
私たちは私たちのRNG形質を使用して新しい乱数を生成している各機能に毎回新しい状態を転送することの繰り返しに対抗しようと、ここでの状態を扱っています。
私の質問はこれです:
ラムダ関数式は、私たちの状態のプレースホルダーとして使用されるように、「rng =>
」述語を定義します。通常、この述部が定義するものは、List.map(x => x)
のように明確です。ここで、xはリストの各要素です。しかし、それは私には分かりませんrng
はここにあります。
編集:私はランド[A]が表現されたものを求めていないよ
...一部の人々は私は明確にするために、ここでいくつかのさらなる例を与える質問を理解していなかったと思います。私は上記のマップの例では例えば
...受け取った引数rng =>
は次のように解釈されることになっているもの
def map[A,B](l: List[A])(f: A => B): List[B] = ...
val l = List(1,2,3,4,5)
// l.map(x => x+1) -> List(2,3,4,5,6)
を求めています、概念的に受け取った引数x =>
が関数によって与えられたことを理解することが非常に簡単です引数f
はリストl
の個々の要素として解釈されます。
具体的にはrng =>
の概念的な接続をunit
に探しています。
'rng'はちょうど別の' x'または '_'です。受け取った議論です。この場合、 'RNG'型のarg/parameterです。型 'Rand'は' RNG'を受け取りタプルを生成する関数です。 – jwvh