On Wed, Jan 04, 2006 at 11:53:59AM +0100, Ulf Norell wrote:
On Jan 4, 2006, at 2:25 AM, Dylan Thurston wrote:
On Tue, Jan 03, 2006 at 02:41:40PM -0800, Ashley Yakeley wrote:
David Roundy wrote:
On Mon, Jan 02, 2006 at 04:23:32PM -0800, Ashley Yakeley wrote:
One open question (in my mind) would be whether we'd allow
data Foo = FooInt { foo :: Int } | FooChar { foo :: Char }
In the "new" system, there's no reason this need be illegal. How would this behave?
data Foo a b = FooA {foo :: a} | FooB {foo :: b} I'm not sure I understand the problem. Why would there be any difficulty with this? What type would "foo" have? ...
Nothing, since in David's proposal there would be no 'foo' defined on the top level at all.
What happens to record updates?
setFoo x r = r { foo = x }
Or is the proposal to remove updates as well?
Ah, good point, I hadn't thought about that. My proposal was to keep record updates which would indeed mean that we'd need to require that all "foo"s in a given data type have the same type. Which I don't think is a bad thing either... it just hadn't occurred to me. -- David Roundy http://www.darcs.net