Add a seq>dlist word and make a dlist literal DL{

Implement prettyprint on dlists.
db4
Doug Coleman 2011-10-27 15:17:49 -07:00
parent 721d035901
commit 3f4f8c678d
3 changed files with 21 additions and 2 deletions

View File

@ -1,8 +1,8 @@
! Copyright (C) 2007, 2009 Mackenzie Straight, Doug Coleman,
! Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: combinators kernel math sequences accessors deques
search-deques summary hashtables fry math.order ;
USING: accessors combinators deques fry hashtables kernel math
math.order parser search-deques sequences summary vocabs.loader ;
IN: dlists
<PRIVATE
@ -158,6 +158,9 @@ M: dlist clear-deque ( dlist -- )
: dlist>seq ( dlist -- seq )
[ ] collector [ dlist-each ] dip ;
: seq>dlist ( seq -- dlist )
<dlist> [ '[ _ push-back ] each ] keep ;
: 1dlist ( obj -- dlist ) <dlist> [ push-front ] keep ;
: dlist-filter ( ... dlist quot: ( ... value -- ... ? ) -- ... dlist' )
@ -167,3 +170,8 @@ M: dlist clone
<dlist> [ '[ _ push-back ] dlist-each ] keep ;
INSTANCE: dlist deque
SYNTAX: DL{ \ } [ seq>dlist ] parse-literal ;
{ "dlists" "prettyprint" } "dlists.prettyprint" require-when

View File

@ -0,0 +1 @@
Doug Coleman

View File

@ -0,0 +1,10 @@
! Copyright (C) 2011 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: dlists kernel prettyprint.custom ;
IN: dlists.prettyprint
M: dlist pprint-delims drop \ DL{ \ } ;
M: dlist >pprint-sequence dlist>seq ;
M: dlist pprint-narrow? drop f ;
M: dlist pprint* pprint-object ;