Quero usar o lens para criar uma função que atualiza uma chave HashMap se ela existir; se a chave não existir, a função avalia para Nothing. Essa é minha tentativa até agora.
module Foo where
import Data.HashMap.Strict (HashMap, empty)
import Control.Lens
foo :: HashMap String Integer
foo = empty
-- I want this to be:
-- bar :: Maybe (HashMap String Integer)
bar :: HashMap String Integer
bar = over (at "1") (\_ -> Just 2) foo
Este é um exemplo simplificado do que estou tentando fazer no final das contas -- o caminho da lente é, na verdade Dex.exprs . at exprId . Dex.children
, , então também quero poder acessar campos mais abaixo no caminho após o "at". Mas se "at" focar em Nothing, a expressão inteira deve ser avaliada como Nothing.
Também sou muito novo em Haskell, então gostaria de dicas sobre como comunicar conceitos de forma melhor/concisa/padronizada. Tive dificuldade em escrever um título para este post.
Usar
failover
eix
: