2016-03-24 15 views
0

Я нахожусь на PureScript 0.8.2. В PureScript Галоген, функция component имеет подпись:Purescript Halogen Component function: Передача разнесенных аргументов вместо записи?

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 

Am Я смотрел на двух разных 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 
.... 

ответ

0

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

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

ui = component { render, eval } 

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

+0

ах, получилось, спасибо! Я понял, что не понял нюанс «purescript-halogen»: «^ 0.5.14» 'в' bower.json'. Я думал, что он подберет последнюю версию до версии 1.0, но это не относится к версиям ниже 1.0. Ссылка: https://docs.npmjs.com/misc/semver#caret-ranges-123-025-004 – RAbraham