Make it possible to evaluate monadic actions when assigning record
fields
Adde
adde at trialcode.com
Tue Jul 10 10:38:22 EDT 2007
Hi, I'm forwarding this feature request as is on the advice of Neil
Mitchel for discussion / possible inclusion in future versions of
Haskell.
#1518: Make it possible to evaluate monadic actions when assigning
record fields (<-)
---------------------------------+------------------------------------------
Reporter: adde at trialcode.com | Owner:
Type: feature request | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 6.6.1
Severity: normal | Keywords:
Difficulty: Unknown | Os: Unknown
Testcase: | Architecture: Unknown
---------------------------------+------------------------------------------
It is currently not possible to build records from values resulting from
monadic actions while still using the field-specifiers.
foo :: IO Int
...
data Bar = Bar {
barFoo :: Int
}
buildBar :: IO ()
buildBar = do
return Bar {
barFoo <- foo --Evaluate foo to get the Int-value
}
I've found two possible ways of doing this:
1) Using temporaries to evaluate the actions before assigning which
doubles the number of lines:
tmp <- foo
return Bar {
barFoo = tmp
}
2) Lifting the record constructor which prevents you from using field
specifiers (and you really need field specifiers when dealing with
larger records):
liftM Bar foo
Thanks,
Adde
More information about the Haskell-prime
mailing list