Erlang 유형 시스템
-
22-08-2019 - |
문제
나는 웹을 둘러싼 Erlang 프로그램의 다양한 타이핑 관행을 찾고 있는데 몇 가지가있는 것 같습니다.
1.-specs
- 이것은 꽤 매력적으로 보입니다. 몇 곳에서는 관련 - 스펙 스 지시를 갖는 기능이 컴파일 시간 (올바른 유형 사용)에 점검된다고 언급했습니다. 타이퍼?). Im은 양식의 함수 선언에서 이러한 "사양"을 생성하는 작은 파서/코드-그린을 만들고 싶어합니다.
functionName(param1 :List, param2 :Tuple) -> ...
나는 보지 못했다 -spec
추상 유형을 지원합니다 (사용자 선언 유형 - "자동차"유형 -
{car,{weight,_},{height,_},{maxSpeed,_}}
2.-deftype
지령 여기에 언급되었습니다
Erlang은 물건을 입력하기 시작하고 컴파일 시간에 확인할 수 있다면 훨씬 더 강력해질 것입니다. 위에서 언급 한 파서/코드-그린 런 타임은 출력 소스 코드에서 가드 유형 검사를 생성합니다.
해결책
유형 및 사양 속성에 대한 자세한 정보는 다음과 같습니다.
http://www.erlang.org/eeps/eep-0008.html
투석기를 사용하여 확인할 수 있습니다 (참조 dialyzer --help
).
타이퍼는 그것들을 생성하는 데 사용될 수 있습니다 (참조 typer --help
).
다른 팁
살펴보십시오http://learnyousomeerlang.com/types-or-lack-thereof(매우 깨끗한 설명) 및 참조 여기 :http://erlang.org/doc/reference_manual/typespec.html
컴파일 시간 유형 확인은 Erlang의 완료가 아닙니다. 대신 컴파일 후 유형 확인을 수행하는 투석기를 사용하십시오.
'사용자 정의 유형'을 만드는 방식은 예상대로 태그가 지정된 튜플을 사용하는 것입니다. 투석기는 코드 경로를 검사하여 실패한 기능 리턴을 생성 할 수있는 코드 경로를 식별합니다.
투석기가 최선을 다하기 위해서는 '실패 할 경우 let'를 받아들이고 예상 결과와 일치하는 조항 만 작성해야합니다.
EDOC로 기능을 문서화해야합니다. 투석기는 문서 시스템의 유형 사양을 사용하여 유형을 추론합니다. 대표 매뉴얼을 찾을 수 있습니다 여기.