다른 사람들이 지적했듯이, LList
이 유형의 이름이 아닌,
...
| LFunction of string * (lToken list)
(. 내가 괄호를 잘인지 모르겠어요 내 ML 매우 녹슨) : 그냥 직접 관련된 유형을 사용 , 차별화 된 노동 조합의 생성자의 이름 일뿐입니다. F #에서는 차별화 된 통합의 경우가 .NET 유형으로 컴파일되지만 실제로 구현 된 세부 사항이므로 생성 된 유형을 참조 할 수 없습니다.
당신은 (재귀 유형을 선언 type .. and
사용) string
구성 캐스트 다음 LList
(브라이언과 마르셀로 제안으로) 당신이 정의를 확장 할 수 있습니다로 LFunction
를 선언하거나 새로운 유형을 선언하려면 다음
type List = Token list
and Token =
| LInt of int
| LString of string
| LList of List
| LFunction of string * List
추신 : F #을 쓰고 있다면 표준 명명 가이드 라인을 따르고 유형 이름에 대해 더 알기 쉬운 이름으로 PascalCase
을 사용하는 것이 좋습니다. "l"은 무엇을 의미합니까? 그것을 확장 할 수 있습니까? (타입 유추 덕분에 타입 이름을 쓸 필요가 없습니다).
나는 일반적으로 좀 더 기술적 인 이름을 사용하기를 원하지만, 나는 언어를 사용하여 ispesque 언어에 대한 간단한 인터프리터를 작성하여 놀고있다. 기본적으로, 꽤 자기가 담긴 것을 쓰면서 조금 더 나은 언어를 배우려고 노력하지만, 그다지 사소하지는 않습니다! – MrBear
@MrBear : F #'List' 유형으로 콜리 전하는'List'라는 한 유형을 명명했기 때문에 저는 주로 "PS"를 썼습니다. 'LispList'를 사용하면 더 좋을 것입니다 :-) –