id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	os	architecture	failure	difficulty	testcase	blockedby	blocking	related
1518	Make it possible to evaluate monadic actions when assigning record fields (<-)	adde@…		"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"	feature request	closed	normal	_|_	Compiler	6.6.1	wontfix		hackage.haskell.org@…	Unknown/Multiple	Unknown/Multiple	None/Unknown	Unknown				
