느릅 나무의 타입 시그니처를 이해하려고합니다. 이 함수는 정확히 무엇을 반환합니까? 그것은 아무 인자도받지 않고 반환하는 함수 인 것처럼 보입니다 ...느릅 나무의 타입 시그니처 이해하기 리턴 타입
route : Parser (Page -> a) a
느릅 나무의 타입 시그니처를 이해하려고합니다. 이 함수는 정확히 무엇을 반환합니까? 그것은 아무 인자도받지 않고 반환하는 함수 인 것처럼 보입니다 ...느릅 나무의 타입 시그니처 이해하기 리턴 타입
route : Parser (Page -> a) a
저는 스스로 학습을위한 연습으로 이것을 대답하려고합니다. 다른 것들이 내가 잘못하면칩니다.
난 당신이
type Person = Adult String | Child String Age
아이 같은 것을하는 데 사용됩니다 확신하는 것은 두 개의 매개 변수를 유형입니다. 구문 분석기는 같습니다. 그러나 definition 꽤 무서운가요 당신이 파서는 궁극적으로 미국의 목록에 국가에서 함수의 래퍼 인 방법을 참조했다
type Parser a b =
Parser (State a -> List (State b))
type alias State value =
{ visited : List String
, unvisited : List String
, params : Dict String String
, value : value
}
. 궁극적으로 그것은 'unvisited'문자열이나 params의 목록을 통과하게 될 것입니다. 점진적으로 각각을 방문하고 그 결과가 최종 '가치'로 결합 될 것입니다.
a
,
b
- -
다음으로, 파서는 두 가지 유형의 매개 변수를 사용하는 동안주의 parseHash
이 당신의 원래
route : Parser (Page -> a) a
이 있어야 할 것입니다,
parseHash : Parser (a -> a) a -> Location -> Maybe a
그래서 정의
route : Parser (Page -> Page) Page
을 입력하여 확인하십시오.
따라서 원래 질문으로 돌아가려면 route
은 하나의 Page
에서 다른 것으로 이동하는 방법에 대한 지침을 캡슐화하는 파서 (매우 일반적인 개체)이며 parseHash를 통해 사용할 수 있습니다. Page
다음으로 가야합니다. 물론 라우터에서 기대할 수있는 것입니다.
희망이있어서 시작하겠습니다.
감사. 이것은 올바른 방향으로 나를 가리켰다. – Matt
어디서 왔는지에 대한 참조를 추가 할 수 있습니까? – robertjlooby
[이 예제 앱]의 22 번째 줄 (https://github.com/AdrianRibao/elm-spa-example/blob/master/main.elm). 감사합니다 – Matt