Purescript卤素组件功能:传递间隔参数而不是记录?

时间:2016-03-24 11:55:11

标签: purescript halogen

我在使用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函数吗?或者由空格分隔的参数是否转换为记录?所以我在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
....

1 个答案:

答案 0 :(得分:0)

抱歉,模板项目尚未更新。谢谢你的提醒!

假设您的evalrender函数在范围内,您可以使用字段双关语以这种方式编写组件定义:

ui = component { render, eval }

但是,是的,现在总是需要记录。我马上就会更新模板项目。