Функция компонента 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 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
....

person RAbraham    schedule 24.03.2016    source источник


Ответы (1)


К сожалению, проект шаблона еще не обновлен. Спасибо за напоминание!

Предполагая, что ваши функции eval и render находятся в области действия, вы можете использовать каламбуры полей, чтобы написать определение компонента следующим образом:

ui = component { render, eval }

Но да, запись теперь требуется всегда. Я немедленно обновлю проект шаблона.

person gb.    schedule 24.03.2016
comment
а, понял, спасибо! Я понял, что не понимаю нюансов "purescript-halogen": "^0.5.14" в bower.json. Я думал, что он подберет последнюю версию до 1.0, но это не относится к версиям ниже 1.0. Ссылка: docs.npmjs.com/misc/semver#caret- диапазоны-123-025-004 - person RAbraham; 25.03.2016