Henning Thielemann wrote:
At
http://www.haskell.org/hawiki/HaskellDbTutorial
it is described, how database queries can be modelled with a monad.
However, I wonder if this is also possible without monads. Say, writing
"DB.map col1 $ DB.filter (\row -> col2 row == 10+2) myTable"
for
"SELECT col1 FROM MyTable where col2 = 10+2"
If and only if the database is a purely functional immutable data
structure, this can be done. This is because the $ operator, function
application, is used for control and/or dataflow.
Many interesting databases are not purely functional immutable; most
reside in the external world and can spontaneously change behind your
program's back. The >>= operator generalizes from function application
to these cases. Thus the monadic way subsumes the functional way and
covers other uses.
You can also make it an arrow. You can also make it an applicative.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe