2016-10-23 4 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

참조 할 문서의 버전이 Core 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을 홍보해야한다. 고맙습니다! –

2

내가 생각할 수있는 가장 짧은 예가 여기에 있습니다. 시드가 상수이기 때문에 동일한 부울을 반환합니다. 당신은 임의의 숫자가 런타임에서 생산받을 필요하면

, 당신은 그래서 느릅 런타임이 임의성을 얻을 수 Cmd 을 생산 Random.generate을 사용해야합니다 . Cmd을 실행하는 유일한 방법이기 때문에이 경우 Platform.Program 의 형식이 필요합니다.

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

main = 
    text <| toString <| fst <| step bool (initialSeed 1) 
관련 문제