Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.lang.forth    |    Forth programmers eat a lot of Bratwurst    |    117,927 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 116,531 of 117,927    |
|    albert@spenarnc.xs4all.nl to B. Pym    |
|    Re: Lisp problem    |
|    04 Jun 24 12:53:23    |
   
   In article ,   
   B. Pym wrote:   
   >HenHanna wrote:   
   >   
   >> How can I write this function simply? (in Common Lisp)   
   >>   
   >> -- Given a string 'a.bc.' -- replace each dot(.) with 0 or 1.   
   >>   
   >> -- So the value is a list of 4 strings:   
   >> ('a0bc0' 'a0bc1' 'a1bc0' 'a1bc1')   
   >>   
   >> -- The order is not important.   
   >> If the string has 3 dots, the value is a list of length 8.   
   >   
   >   
   >SP-Forth   
   >   
   >REQUIRE /STRING lib/include/string.f   
   >REQUIRE PLACE ~mak/place.f   
   >REQUIRE { ~ac/lib/locals.f   
   >REQUIRE StringReplace2 ~nn\lib\string.f   
   >REQUIRE printf<[ ~ilya\Lib\win\System\printf.f   
   >REQUIRE list-all ~ygrek/lib/list/all.f \ all words for cons pair lists   
   >list ALSO!   
   >REQUIRE CASE-INS lib/ext/caseins.f \ Case-insensitive.   
   >   
   >: get-bin-digits ( u n -- ...) 0 do dup 1 and swap 2 / loop drop ;   
   >   
   >: str-0-term ( adr) count + 0 swap c! ;   
   >   
   >create form-str 257 allot   
   >0 value cnt   
   >0 value power   
   >   
   >: dotty { adr len -- }   
   > \ Doesn't terminate output string with 0-byte.   
   > form-str adr len s" ." s" %d" StringReplace2   
   > form-str str-0-term   
   > len - to cnt drop   
   > 1 cnt 0 do 2 * loop to power   
   > power 0 do   
   > printf<[ i cnt get-bin-digits form-str count ]>   
   > type cr   
   > loop   
   >;   
   >   
   >s" apple.bun.c" dotty   
   >   
   > ===>   
   >apple0bun0c   
   >apple0bun1c   
   >apple1bun0c   
   >apple1bun1c   
   >   
   >   
   >s" apple.bun.c.d" dotty   
   >   
   > ===>   
   >apple0bun0c0d   
   >apple0bun0c1d   
   >apple0bun1c0d   
   >apple0bun1c1d   
   >apple1bun0c0d   
   >apple1bun0c1d   
   >apple1bun1c0d   
   >apple1bun1c1d   
   >   
      
   A glaring disadvantage of Forth against lisp, that the result   
   of lisp is ready to be reused. One hardly use this example as   
   an application, more of a component.   
   Forth just dumps the results on the screen.   
      
   Groetjes Albert   
   --   
   Don't praise the day before the evening. One swallow doesn't make spring.   
   You must not say "hey" before you have crossed the bridge. Don't sell the   
   hide of the bear until you shot it. Better one bird in the hand than ten in   
   the air. First gain is a cat purring. - the Wise from Antrim -   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca