[haskell] Can I rewrite 2 functions to use same case expression

Viewer

copydownloadembedprintName: Can I rewrite 2 functions to use same case expression
  1.  
  2.  
  3. withVersionProxy :: a -> FormVersion -> RDParams a -> (forall b e. (EvalParams b ~ RDParams a,  FormConstraints b) =>  Proxy b -> EvalParams b -> c) -> Maybe c  
  4. withVersionProxy key ver p f = 
  5.     case ver of 
  6.       FormVersion 1 -> Just $ f (Proxy :: Proxy (Form_1)) p 
  7.       FormVersion 2 -> Just $ f (Proxy :: Proxy (Form_2)) p 
  8.       otherwise -> Nothing
  9.   
  10. withVersion :: a -> FormVersion -> (forall e. (EvalParams e ~ RDParams a,  FormConstraints e)  => Registration e)  -> (forall b e. (EvalParams b ~ RDParams a,  FormConstraints b) => Registration b -> c) -> Maybe c  
  11. withVersion key ver gen f = 
  12. case ver of 
  13.   FormVersion 1 -> Just $ f (gen :: Registration Form_1) 
  14.   FormVersion 2 -> Just $ f (gen :: Registration Form_2) 
  15.   otherwise -> Nothing
  16.  

Editor

You can edit this paste and save as new:


File Description
  • Can I rewrite 2 functions to use same case expression
  • Paste Code
  • 14 Feb-2021
  • 777 Bytes
You can Share it: