문제
이 OCAML 코드 스 니펫이 주어지면 :
let rec range a b =
if a > b then []
else a :: range (a+1) b
;;
REPL은 유형이 다음과 같습니다.
val range : int -> int -> int list = <fun>
다음과 같은 입력 제공 :
range 0 4;;
목록을 돌려줍니다.
- : int list = [0; 1; 2; 3; 4]
그러나 입력을 제공합니다
range -4 2;;
오류가 발생합니다.
Characters 0-5:
range -4 1;;
^^^^^
This expression has type int -> int -> int list but is here used with type int.
이것이 나에게 무엇을 말하려고 하는가?
해결책
입력하면
range -4 2;;
당신은 그것을 기억해야합니다 -
단일 부정이 아닌 함수, 디스 픽스 기능입니다.
단독 부정을하려면 두 가지 중 하나를 수행 할 수 있습니다.
다른 팁
방금 랩해야한다는 것을 깨달았습니다
-4 in parenthesis
즉, 전화 :
range (-4) 0;;
제공 :
- : int list = [-4; -3; -2; -1; 0]
다른 사람이 같은 문제를 겪을 때이 질문을 남겨 두겠습니다.
문제를 요약하는 것은 바로 그 것입니다 -
토큰의 표시가 아닌 함수로 해석됩니다. 4
.
너는 볼 수있어: OCAML 언어 문제 자세한 내용은.
제휴하지 않습니다 StackOverflow