使用Elm 0.17,我有时希望看到计算过程中采取的步骤,例如:
let
names = Debug.log "accounts"
List.map (\x -> x.name) accounts
sortedNames = Debug.log "sorted accounts"
List.sortBy String.toLower names
options =
List.map (viewAccountOption selectedName) sortedNames
in
[ viewEmptyOption ] ++ options
记录以下内容:
accounts: <function>
sorted accounts: <function:sortBy>
我理解Elm是懒惰的,并且在实际需要值时会评估thunk。
我在elm-core Basics或其他任何地方找不到force
或strict
函数。
有没有办法强制评估一个值?
答案 0 :(得分:3)
您可以使用括号:
来实现Debug.log "accounts"
(List.map (\x -> x.name) accounts)
或使用<|
运算符
Debug.log "accounts" <|
List.map (\x -> x.name) accounts
编辑:
原因是Debug.log以List.map
(函数)作为第二个参数进行评估,然后返回该参数以与该行的其余部分组成。你只需要告诉榆树你的预期参数优先级