2017-12-11 62 views
1

私は、ランダムジェネレータがどのように動作するかを理解している問題を抱えています。エルメルではランダムジェネレータはどのように機能しますか?

私はクリック上の2つのサイコロを転がししようとしている次の例では

enter image description herehttps://ellie-app.com/d9rXQHpfJa1/1

が、「mは、エラーメッセージがあなたがしている強力なヒントを与えている

Function generate is expecting the 2nd argument to be: 

Random.Generator (Int, Int) 
But it is: 

(Random.Generator Int, Random.Generator Int) 

答えて

2

を取得期待どおりのものではないパラメータを渡そうとしています。 Elmは多くの型推論を行い、NewFace (Int, Int)は2つの整数のタプルをとるコンストラクタです。つまり、2番目のパラメータがgenerateに渡されると予想されます。

Random package documentationにアクセスすると、2つのジェネレータを取り、タプルの最初の2つを使用するジェネレータを返します。それはRandom.pairと呼ばれ、あなたのコードでそれを使用した場合、それは次のようになります。

(model, Random.generate NewFace (Random.pair (Random.int 1 6) (Random.int 1 6))) 
+0

Random.pairを呼び出さずにこれを行う方法はありますか?私はそれがどのように動作するかを理解するために、できるだけ少しだけエルムを助けて、これをしたいと思っています。 – user2167582

+0

確かに! 'pair'は' map2(、) 'と同じです。ウサギの穴に落としたい場合は、[源はgithubで入手できます](https://github.com/elm-lang/core/blob/06715ed57215325d457f8cf4e0538a69df3b10ee/src/Random.elm#L177-L179) –

+0

ありがとう、 2つのジェネレータを解釈できるコアAPIはありますか? – user2167582