On 26.07.13 6:44 PM, Andreas Abel wrote:
    headers0 <- M.fromList <$> do
      forM fields_header $ \ (n, fld) -> do
        (n,) <$> reflect $ fld ast

Ah, I forgot one more 'do' to override the stronger binding of <$>:

          (n,) <$> do reflect $ fld ast

Great satisfaction!  I killed all long-ranging parentheses! ;-)

-- Andreas

   let headers = M.insert "_report_ranges" (format_two_tstamps rv)
headers0
   foldM write_period (rv,headers,(snd rv,snd rv)) asts
   return ()
  where
  write_period (rv,headers,mv) ast = do
   pv@(p_valid_from,p_valid_until) <- reflect $ get_trange "TRange" ast
   check_inside pv rv
   let prevailing = M.lookup "PREVAILING" ast
   (mv,pv) <- case prevailing of
     Just _  -> return (pv,pv)        -- set the major valid period
         -- Make sure each VAR period occurs later than the prevailing
         -- period. If exactly at the same time add 1 min
     Nothing -> case () of
      _ | fst mv < p_valid_from  -> return (mv,pv)
      _ | fst mv == p_valid_from -> return (mv,(p_valid_from + 60,
                          p_valid_until))
      _  -> gthrow . InvalidData . unwords $ [
               "VAR period begins before prevailing:",
          show ast, "; prevailing TRange", show mv]
   let token      = maybe (M.findWithDefault "" "VAR" ast) id prevailing
   let ast1 = M.insert "_token" token .
                M.insert "_period_valid" (format_two_tstamps pv) .
                  M.unionWith (\_ x -> x) headers $ ast
   let title      = M.member "Title" ast
   let headers1 = if title then headers else
            M.delete "_limit_to " . M.delete "_limit_recd" $ headers

   write_fields h ast1 fields

   return (rv,headers1,mv)


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe




--
Andreas Abel  <><      Du bist der geliebte Mensch.

Theoretical Computer Science, University of Munich
Oettingenstr. 67, D-80538 Munich, GERMANY

andreas.a...@ifi.lmu.de
http://www2.tcs.ifi.lmu.de/~abel/

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to