如何强制在Debug.log中评估值

时间:2016-06-09 14:54:01

标签: elm

使用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或其他任何地方找不到forcestrict函数。

有没有办法强制评估一个值?

1 个答案:

答案 0 :(得分:3)

您可以使用括号:

来实现
Debug.log "accounts"
    (List.map (\x -> x.name) accounts)

或使用<|运算符

Debug.log "accounts" <|
    List.map (\x -> x.name) accounts

编辑:

原因是Debug.log以List.map(函数)作为第二个参数进行评估,然后返回该参数以与该行的其余部分组成。你只需要告诉榆树你的预期参数优先级