필자는 코드 정의에 타입 정의를 추가하기로 결정했고, Typer를 사용하여 시작점 (erlang 15b02, typer 0.9.4)을 얻었습니다. 예기치 않은 결과 (타이프 사용)
나는 모든 일이 잘 있는지 확인하기 위해 몇 가지 결과를 포착하고 이해가 안이 결과 발견-spec par(boolean(),'f' | 'o') -> [40 | 41].
내가 입력을 이해할 수 : 사양을 생산
par(true, o) -> "(";
par(true, f) -> ")";
par(_, _) -> "".
을 매개 변수는 내 보내지 않았고 내 코드는 부울 식을 첫 번째 매개 변수로, 원자 o 또는 f를 두 번째로만 호출합니다 (예 : par(4 > P, o)
).
그러나 왜 반환 목록에 빈 목록이 포함되어 있지 않습니까? 나는 또는 [40 | 41 | ""]
과 같은 것을 기대하고있었습니다.이 코드는 수학 표현식 인쇄에 사용되며 우선 순위 또는 연산자가 충분할 때 괄호를 사용하지 않습니다. 예를 들어
3 + 4 + 5 * (6 + 7) - sin(x + 7)
보다는
3 + (4 + ((5 * (6 + 7)) - sin((x + 7))))
시험 범위의 결과 같이 내가 코드를 첫 번째 매개 변수로 허위로 호출 확신 : 유형 X
의 0 개 이상의 요소의 목록은 "Erlang type specification, [X]
수단으로서
15..| par(true, o) -> "(";
15..| par(true, f) -> ")";
308..| par(_, _) -> "".
감사합니다. 나는 다른 결과에서 사용되었지만 ...의 의미를 기억하지 못했습니다. – Pascal