没有与之相当的速记
.foo
语法和它的东西,出现了一次又一次。
如果你想了解更多关于埃文省略这类东西的理由(例如,使setter语法像
!foo
或其他特殊符号)。就像Elm的许多设计决策一样,我认为答案可以归结为保持一种单一的做事方式,让新来者保持轻松。
setFoo : Foo -> Model -> Model
setFoo foo model = { model | foo = foo }
自从
model
updateModel : Foo -> Bar -> Model -> Model
updateModel foo bar model =
model
|> setFoo foo
|> setBar bar
或者如果你想更简洁一点,你可以用
>>
缩短上述时间:
updateModel2 : Foo -> Bar -> Model -> Model
updateModel2 foo bar = setFoo foo >> setBar bar
Maybe.map2
例子可以这样写,其中
maybeModel
maybeValue
从您的示例中替换:
Maybe.map2 setFoo maybeValue maybeModel
当然,您必须创建大量样板setter代码,但在我看来,使用这种语言感觉更自然,而且看起来比该语言提供的setter语法要好得多。