F# 我应该如何匹配Elmish Tonaviable参数类型

F# 我应该如何匹配Elmish Tonaviable参数类型,f#,url-routing,elmish,F#,Url Routing,Elmish,目前我正在尝试学习安全堆栈,特别是尝试通过Elmish处理URL导航;我遵循了Elmish站点上的示例代码,该代码定义了一个路由映射函数,然后将其传递给parsePath函数。 但是,Program.toNavigable需要一个解析器的选项。 显然,我可以使用函数组合来获得正确的类型,但我似乎遗漏了一些东西。任何熟悉Elmish中URL导航的人都能提供建议吗?好吧,一个解析器(只需另一个'a),所以一切都应该很好 例如,假设以下类型定义了所有导航: type Route = Blog of i

目前我正在尝试学习安全堆栈,特别是尝试通过Elmish处理URL导航;我遵循了Elmish站点上的示例代码,该代码定义了一个路由映射函数,然后将其传递给parsePath函数。 但是,Program.toNavigable需要一个解析器的选项。 显然,我可以使用函数组合来获得正确的类型,但我似乎遗漏了一些东西。任何熟悉Elmish中URL导航的人都能提供建议吗?

好吧,一个
解析器
(只需另一个
'a
),所以一切都应该很好

例如,假设以下类型定义了所有导航:

type Route = Blog of int | Search of string
那么所涉及的当事人应该有以下类型:

init: Route option -> Model * Cmd<Msg>
parser: Parser<Route option>
urlUpdate: Route option -> Model -> Model * Cmd<Msg>

欢迎登机。您可能想添加一些代码以吸引更多的答复:)“好吧,解析器”。这是非常明显的事实-现在我觉得有点愚蠢请不要觉得愚蠢,我也在类型上绊倒了,因为我没有意识到init必须更改签名(我一开始有它的unit->Model*Cmd)。谢谢@nilekirk。问题在于后续Program.mkProgram调用的类型匹配,为init函数提供了正确的类型解决了我的问题。不遵守打字系统是你朋友的口头禅。
Program.mkProgram init update view
|> Program.toNavigable parser urlUpdate
|> Program.withReactBatched "elmish-app"
|> Program.run