2016-06-09 42 views
1

使用榆樹0.17,我有時看到一個計算過程中所採取的措施,如:如何強制的價值評估中的debug.log

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> 

我知道榆樹是懶惰的,當這些值真的需要的時候就會評估樹枝。

我找不到forcestrict函數elm-core Basics或包中的任何其他地方。

有沒有辦法強制評估一個值?

+3

就像一個評論...榆樹不是懶惰的,也就是說,所有的指令立即執行 –

回答

3

你可以做到這一點的或者使用括號:

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

或者使用<|操作

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

編輯:

的原因是,在的debug.log與List.map評估(一個函數)作爲第二個參數,然後返回該參數以與該行的其餘部分組合。你只需要提示榆樹有點什麼是你想要的參數優先