[erlang-questions] New draft of frames proposal (was Re: Frames proposal)

Richard O'Keefe <>
Thu May 3 06:22:50 CEST 2012

There is a new version of

- a couple of diagrams
- some new material, including a description of what
  is wrong with using X.y to access a field
- a new section 2 apologising for the rewrite this
  needs and hasn't had yet
- a new section 15 (starting on page 41)
  which describes in some detail how it works
  with new BEAM(-ish) instructions
	put_frame	allocate a frame
	is_frame	give true/false result
	test_frame	used in clause heads
	check_frame	used in expressions
	load_slot	load a slot (with inline cache)
	copy_frame	copy a frame for updating
	store_slot	store a slot (with inline cache)

On 2/05/2012, at 5:19 AM, Björn-Egil Dahlberg wrote:

> Syntax is more than just finding which characters our parser can identify, like in the frames proposals where ~ is our separator. When I read <{ k ~ value | Is }>  it says cons "k is like a value" to Is. *brr*

In fact the semantics very closely related to the semantics of
`((k ) ) considered as an association list in Scheme,
which really does involve a cons.  Let's face it, Is#{k=value}
says that k *equals* value, which it doesn't.  There is a uniquely
right character for the job, and that's ↦ .

> What guarantees should we leave?

Any data structure associated with Phil Bagwell is likely to repay study.
I do hope there is no patent on "Cache-Aware Lock-Free Concurrent Hash Tries"
by Aleksandar Prokopec, Phil Bagwell, and Martin Odersky, because that's
_exactly_ what I want for storing frame descriptors.  However, the
frame implementation described in the frames proposal is meant as a
replacement for records, and however good HAMTs are at other things,
frames should leave them in the dust *when used as record replacements*.

More information about the erlang-questions mailing list