如果你想使用rmax
內nmax
,pass
和fail
沒有把它當作一個arguement,你需要把它列入的generateUpTo
的where
塊。否則,它的字面意思是「不在範圍內」。例如:
generateUpTo rmax = check rmax
where
check pass = pAllSorted
check fail = error "insert multiple of 10!"
nmax = rmax `div` 10
pass = rmax `elem` mot
fail = rmax `notElem` mot
如果你想在多個地方使用這些功能,你可以只accect RMAX作爲arguement:
nmax rmax = rmax `div` 10
pass rmax = rmax `elem` mot
fail rmax = rmax `notElem` mot
注意 - 它看起來像你也有一些問題,你的定義check
... pass
和fail
值只有check
的爭論,而不是你上面定義的函數。
更新
使用n最大(外最,其中塊範圍的版本),你需要RMAX的值傳遞給它。像這樣:
nmax rmax -- function application in Haskell is accomplished with a space,
-- not parens, as in some other languages.
但是請注意,在nmax
定義名稱rmax
不再顯著。這些功能都是完全一樣的:
nmax rmax = rmax `div` 10
nmax a = a `div` 10
nmax x = x `div` 10
同樣,你不需要有一個名爲rmax
值來調用它。
nmax rmax
nmax 10 -- this is the same, assuming rmax is 10
nmax foo -- this is the same, assuming foo has your 'rmax' value.
對於一直投票Haskell初學者問題的人來說,如果你能知道,請留下評論,告訴你爲什麼要這樣做。 – Phyx 2012-01-01 16:49:38
我們會外出給他投票的! :)更嚴重的是,對於那些問我「爲我工作」的作業問題的人來說,存在着很多的濫用,也許這是一個錯誤。 – gatoatigrado 2012-01-01 22:41:13
@Phyx事實上,我儘量不要投新手問題,但也許我可以解釋downvoter。這些問題中的大部分都是「過於本地化」的用語,更一般地說,這些用語並不有趣。 – 2012-01-01 23:40:04