Skip to content

Follow-up from "WIP: Make UniqFM typed on it's key"

The following discussion from !3577 (closed) should be addressed:

  • @rae started a discussion:

    Ew. Is there a function that can be written that avoids going via a list?

transClosureFV :: VarEnv VarSet -> VarEnv VarSet
-- If (f,g), (g,h) are in the input, then (f,h) is in the output
--                                   as well as (f,g), (g,h)
transClosureFV env
  | no_change = env
  | otherwise = transClosureFV (listToUFM_Directly new_fv_list)
  where
    (no_change, new_fv_list) = mapAccumL bump True (nonDetUFMToList env)
      -- It's OK to use nonDetUFMToList here because we'll forget the
      -- ordering by creating a new set with listToUFM
    bump no_change (b,fvs)
      | no_change_here = (no_change, (b,fvs))
      | otherwise      = (False,     (b,new_fvs))
      where
        (new_fvs, no_change_here) = extendFvs env fvs
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information