He Curtis,

> The third tutorial, "Working with tables in PicoLisp", has the following
> code to sort a table:
>  ...
> Still, it seems so complicated. Is there a simpler way of doing this?

Indeed! I wonder why there is so much and complicated code. You can do it all
out of the box.

: (setq *People
   (quote
      (name John phone 123456 age 56)
      (name Fred phone 654321 age 35)
      (name Fred phone 236597 age 38)
      (name Hank phone 078965 age 23) ) )
-> ((name ...

# Sort by the second element (the name)
: (by cadr sort *People)
-> ((name Fred phone 236597 age 38) (name Fred phone 654321 age 35)
   (name Hank phone 78965 age 23) (name John phone 123456 age 56))

# Sort by the 4th element (the phone nomber)
: (by cadddr sort *People)
-> ((name Hank phone 78965 age 23) (name John phone 123456 age 56)
   (name Fred phone 236597 age 38) (name Fred phone 654321 age 35))

: (by '((L) (get L 4)) sort *People)
->  ... # same

# Sort by finding the element after 'name'
: (by '((L) (cadr (memq 'name L))) sort *People)
-> ((name Fred phone 236597 age 38) (name Fred phone 654321 age 35)
   (name Hank phone 78965 age 23) (name John phone 123456 age 56))

# Sort by finding the element after 'age'
: (by '((L) (cadr (memq 'age L))) sort *People)
-> ((name Hank phone 78965 age 23) (name Fred phone 654321 age 35)
   (name Fred phone 236597 age 38) (name John phone 123456 age 56))

—Alex

-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to