Si desea utilizar rmax
dentro nmax
, pass
, y fail
sin pasar como un argumento, tendrá que incluirlo en el bloque de generateUpTo
where
. De lo contrario, es literalmente "no en el alcance". Ejemplo:
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
Si desea que estas funciones para ser utilizadas en múltiples lugares, sólo podría accect rmax como un argumento:
nmax rmax = rmax `div` 10
pass rmax = rmax `elem` mot
fail rmax = rmax `notElem` mot
Nota - parece que también tiene algunos problemas con su definición de check
... el valor pass
y fail
solo hay argumentos de check
, y no las funciones que ha definido anteriormente.
actualización
utilizar nmáx (la versión alcance fuera-del-en-bloque), tendrá que pasar el valor de Rmax a ella. De este modo:
nmax rmax -- function application in Haskell is accomplished with a space,
-- not parens, as in some other languages.
Nótese, sin embargo, el nombre rmax
en la definición de nmax
ya no es significativa. Estas funciones son todos exactamente lo mismo:
nmax rmax = rmax `div` 10
nmax a = a `div` 10
nmax x = x `div` 10
Del mismo modo, no es necesario llamar con un valor denominado 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.
Para la persona que sigue votando preguntas de Haskell para principiantes, sería muy útil si pudieras saber, deja un comentario de por qué estás haciendo esto. – Phyx
¡lo superaremos! :) Más en serio, ha habido mucho abuso por parte de la gente que pregunta "hazme el trabajo por mi", quizás fue un error. – gatoatigrado
@Phyx En realidad, trato de no votar por las preguntas de los novatos, pero tal vez pueda explicarle al votante. Muchas de estas preguntas son para qué es el término "demasiado localizado" y, en términos más generales, no son interesantes. –