Purescript Halogen Component 函数:传递间隔参数而不是记录?
Purescript Halogen Component function: Passing spaced arguments instead of a Record?
我正在使用 PureScript 0.8.2。在 PureScript Halogen 中,component
函数具有签名:
component :: forall s f g. ComponentSpec s f g -> Component s f g
其中
-- | A spec for a component.
type ComponentSpec s f g =
{ render :: s -> ComponentHTML f
, eval :: Natural f (ComponentDSL s f g)
}
所以component
需要一个记录。但是在Halogen Template Project中,component
的调用方式如下:
ui = component render eval
我在看两个不同的 component
函数吗?或者由 space 分隔的参数是否转换为记录?所以我在 psci
中尝试了以下操作:
> type Point = { x :: Int, y :: Int }
> let
addP :: Point -> Int
addP p = p.x + p.y
> addP {x: 4, y: 5 }
9
> addP 4 5
Error found:
in module $PSCI
at line 1, column 1 - line 1, column 8
Could not match type
{ x :: Int
, y :: Int
}
with type
Int
....
抱歉,模板项目尚未更新。谢谢提醒!
假设您的 eval
和 render
函数在范围内,您可以使用字段双关语以这种方式编写组件定义:
ui = component { render, eval }
但是,是的,现在总是需要记录。我马上更新模板项目
我正在使用 PureScript 0.8.2。在 PureScript Halogen 中,component
函数具有签名:
component :: forall s f g. ComponentSpec s f g -> Component s f g
其中
-- | A spec for a component.
type ComponentSpec s f g =
{ render :: s -> ComponentHTML f
, eval :: Natural f (ComponentDSL s f g)
}
所以component
需要一个记录。但是在Halogen Template Project中,component
的调用方式如下:
ui = component render eval
我在看两个不同的 component
函数吗?或者由 space 分隔的参数是否转换为记录?所以我在 psci
中尝试了以下操作:
> type Point = { x :: Int, y :: Int }
> let
addP :: Point -> Int
addP p = p.x + p.y
> addP {x: 4, y: 5 }
9
> addP 4 5
Error found:
in module $PSCI
at line 1, column 1 - line 1, column 8
Could not match type
{ x :: Int
, y :: Int
}
with type
Int
....
抱歉,模板项目尚未更新。谢谢提醒!
假设您的 eval
和 render
函数在范围内,您可以使用字段双关语以这种方式编写组件定义:
ui = component { render, eval }
但是,是的,现在总是需要记录。我马上更新模板项目