2016-10-23 15 views
1

私は乱数を見たいだけです。ランダムライブラリの場合はan example straight out of the docsとなります。私はのように、発電機や種子を受け入れ、乱数値と新しいシードを含むタプルを返すようにRandom.generateを期待:Elmで乱数を生成するために必要な最小限のコードは何ですか?

-- TYPE MISMATCH ---------------------------------------------------- ----------- 

The 2nd argument to function `generate` is causing a mismatch. 

5|  Random.generate (Random.int 0 10) seed0 
             ^^^^^ 
Function `generate` is expecting the 2nd argument to be: 

    Random.Generator a 

But it is: 

    Random.Seed 


The 1st argument to function `generate` is causing a mismatch. 

5|  Random.generate (Random.int 0 10) seed0 
         ^^^^^^^^^^^^^^^ 
Function `generate` is expecting the 1st argument to be: 

    a -> b 

But it is: 

    Random.Generator Int 

generate : Generator a -> Seed -> (a, Seed)

-- Main.elm 

import Random 

seed0 = Random.initialSeed 31415 
randomNumber = Random.generate (Random.int 0 10) seed0 
main = 
    -- print result of randomNumber here 

は、コンパイルエラーは、二つの型の不一致を示し、

私はここで何が欠けていますか?

+0

ます。http:// elm-

step : Generator a -> Seed -> (a, Seed) 

だからあなたのリファクタリング、コードは次のようになりますlang.org/examples/random – Tosh

+0

乱数のインスタンスを表示するには、本当にelmアプリが必要ですか?私の疑問を浮かび上がらせる別の方法は、「投稿したばかりのサンプルからどれくらい削除して、タイプエラーが出ないようにするには? –

答えて

3

あなたが参照しているドキュメントのバージョンは、コア1.0.0です。これは古いものです。コアの現在のバージョンは4.0.5です。 (docs for Random here)あなたが探している署名と

機能は現在step命名されています

import Html exposing (text) 
import Random 

seed0 = Random.initialSeed 31415 
(randomNumber, nextSeed) = Random.step (Random.int 0 10) seed0 

main = 
    text <| toString randomNumber 
+2

それはまさに問題です。私はGitbookをPRして、ドキュメントリンクを更新する必要があります。ありがとうございました! –

2

これは私が考えることができる最短の例です。 シードが一定であるため、同じブール値を返します。

実行時に生成取得乱数が必要な場合は、Cmd ので、ニレランタイムがランダム性を得ることができますを生成するRandom.generateを使用する必要があり 。 この場合、Cmdを実行する唯一の方法であるため、Platform.Program という形式が必要です。

import Html exposing (text) 
import Random exposing (..) 

main = 
    text <| toString <| fst <| step bool (initialSeed 1) 
関連する問題