There is now a way to do this :). What used to be the Haskell Array Preprocessor is not the Haskell STate Preprocessor (STPP) and it supports now many things:
- sugared array reading/writing/updating - sugared hash table reading/writing/updating - monadic if - monadic case Get it from http://www.isi.edu/~hdaume/STPP/ using stpp, you would write monadic case expressions as: > mcase fun of > Nothing -> ... etc, just as you wanted :). mif works the same way (the 'm' prefix was chosen to look like 'mdo'). Of course, it still supprots array reading/writing, such as: do a <- newArray (0,100) 0 a[|5|] <- 7 a[|6|] <- 8 a[|6|] <<- a[|5|] * 2 + a[|6|] furthermore, it supports hash table reading/writing (based on the hash table implementation found at http://www.isi.edu/~hdaume/haskell/Util), as in: do ht <- emptyHT ht{|"hello"|} <- "goodbye" print ht{|"hello"|} All of this works both in the IO monad and the ST monad. Comments/Suggestions/Bug reports to me please. -- Hal Daume III "Computer science is no more about computers | [EMAIL PROTECTED] than astronomy is about telescopes." -Dijkstra | www.isi.edu/~hdaume > > mp <- fun > > case mp of > > Nothing -> deal with error > > Just p -> do something with p > > > > where it would be much nicer to be able to just use > > > > caseM fun of > > Nothing -> deal with error > > Just p -> do something with p > > > > which would avoid confusion when reading the code as to whether the value > > mp may be used later in the function. Any ideas how to do something like > > this? _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe
