저는 여전히 새롭고 함수에서 사용하기 위해 목록을 만들려고하고 가능한 한 작게 유지하려고합니다.이 경우 logBase x y가됩니다. 하지만이 목록에서 사용할 수있는 logBase를 가져 오는 데 문제가 있습니다.Haskell에서 Float을 Int로 변환합니다.
[1 .. (logBase의 x 및 y)]
상관 제안?
저는 여전히 새롭고 함수에서 사용하기 위해 목록을 만들려고하고 가능한 한 작게 유지하려고합니다.이 경우 logBase x y가됩니다. 하지만이 목록에서 사용할 수있는 logBase를 가져 오는 데 문제가 있습니다.Haskell에서 Float을 Int로 변환합니다.
[1 .. (logBase의 x 및 y)]
상관 제안?
당신은 당신이 얻을 어떤 종류의 오류 게시하지 않습니다,하지만 난 그것을 이런 식으로 뭔가 상상 :
Prelude> let x = 2
Prelude> let y = 7
Prelude> [1 .. (logBase x y)]
<interactive>:1:7:
No instance for (Floating Integer)
arising from a use of `logBase' at <interactive>:1:7-17
Possible fix: add an instance declaration for (Floating Integer)
In the expression: (logBase x y)
In the expression: [1 .. (logBase x y)]
In the definition of `it': it = [1 .. (logBase x y)]
문제가 있다는 것입니다 :
Prelude> :t logBase
logBase :: (Floating a) => a -> a -> a
는 부동 클래스의 형식을 반환 프로그램의 다른 변수 (1, 'x', 'y')는 정수형입니다.
정수 시퀀스가 필요한가요?
Prelude> :set -XNoMonomorphismRestriction
Prelude> let x = 2
Prelude> let y = 42
Prelude> [1 .. truncate (logBase x y)]
[1,2,3,4,5]
잘라 내기, celing 또는 바닥을 사용하십시오.
아마도 반올림, 자르기, 바닥 또는 천장 기능을 원할 것입니다. Ints와 Floats는 다른 타입이기 때문에 (당신이 보았 듯이) 컴파일러는 이들을 혼합 할 수 없습니다. 잠시 후에 참조 할게.