利用惰性求值优化 Elm 代码性能
1. 背景与问题发现
在处理 Rescue Me 项目时,我们遇到了一些性能问题。在代码中,有一个 getDog 函数用于从字典中查找狗的信息,如果狗不存在则创建新的狗信息。以下是相关代码:
type Trick
= Sit
| RollOver
| Speak
| Fetch
| Spin
type alias Dog =
{ name : String
, tricks : List Trick
}
getDog : Dict String Dog -> String -> List Trick -> ( Dog, Dict String Dog )
getDog dogs name tricks =
let
dog =
Dict.get name dogs
|> Maybe.withDefault (createDog name tricks)
newDogs =
Dict.insert name dog dogs
in
( dog, newDogs )
createDog : String -> List Trick -> Dog
createDog name tricks =
Dog name (uniqueBy trickToString tricks)
uniqueBy : (a -> comparab
订阅专栏 解锁全文
33

被折叠的 条评论
为什么被折叠?



