struct cell% field list-val cell% field list-next end-struct list% : new-list { list1 val -- list2 } list% %allot { list2 } list1 list2 list-next ! val list2 list-val ! list2 ; : .list ( list -- ) begin { l } l while l list-val @ . l list-next @ repeat ; : insert { val listp -- } listp @ val new-list listp ! ; : member? { key liste -- flag } liste begin { l } l while l list-val @ key = if true exit endif l list-next @ repeat false ; : search { key listp -- listp2 } listp begin { lp } lp @ while lp @ list-val @ key = if lp exit endif lp @ list-next repeat lp ; cell% %allot constant listp 0 3 new-list 1 new-list listp ! cr listp @ .list 5 listp @ list-next insert cr listp @ .list 7 listp insert cr listp @ .list 8 5 listp search insert cr listp @ .list