kleopatra999 / owl-lisp

Automatically exported from code.google.com/p/owl-lisp
3 stars 1 forks source link

Datum labeler sharing pass is too deep #136

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
The labeler uses a complete content pass as in fasl encoding, due to which it 
also checks the potentially quite large contents within closures. It could 
simply stop to things which cannot have structure which could be shared in this 
context.

You see a prompt.
> (define foo (iota 0 1 100000))
'foo
> (define x (serialize-lazy foo null #false))
'x
> (ltake x 20)
'(39 40 48 32 49 32 50 32 51 32 52 32 53 32 54 32 55 32 56 32) <- instant
> x
'(39 40 48 . #<in:take-while>) <- after a brief pause

Original issue reported on code.google.com by aohelin on 10 Feb 2012 at 9:10

GoogleCodeExporter commented 9 years ago
added partial closure search and using it here. both results are now instant.

Original comment by aohelin on 11 Feb 2012 at 9:54