Hi all, ...think, I have to apologize....
I screwed it up....it is a language (spoke one...not "programming" ) thing: I read "List of strings" which in german is "Liste von Zeichenketten". THIS expression means this: "A" "B" "C" (for example). This applied to string-join in a germenglish head forms: (string-join "A" "B" "C" "seperator") But I had (define lst (list "A" "B" "C")) (string-join lst "seperator") ...so I thougt I need an "apply" to move the string-join right in front of the "list of strings" (spoken language) in the list of strings (racket-speak). But despite of the nonsense I thought I now have learned how to handle functions with additional arguments in case of the need to 'apply' them. Thanks a lot Shu-Hung, for you help and the patience of all who wanted de-confuse me ;) (THANKS!) Cheers, Meino Shu-Hung You <[email protected]> [16-10-29 18:08]: > Hi Meino, > > Could you give an example of lst or line? Unlike string-append, most of the > time > string-join doesn't really require an 'apply'. As we can see: > > > (string-append "a" "b" "c") > "abc" > > (string-join '("a" "b" "c") ":") > "a:b:c" > > While string-append takes all its arguments and concatenates them into a > string, > string-join simply joins all the strings in its first argument (which > should be a list of strings). > So suppose we have 'line' to be a list of string, then string-append > and string-join can > be used as follows: > > > (define line '("x" "y" "z")) > > (apply string-append line) > "xyz" > > (string-join line " ") > "x y z" > > If string-join is really to be used with apply, then we need to first > construct its arguments > into a list. For instance, the first of example of string-join is turned into: > > > (string-join '("a" "b" "c") ":") > "a:b:c" > > (apply string-join '(("a" "b" "c") ":")) > "a:b:c" > > Given 'line' to be a list of strings, we need to construct the > separator as the second item in > the argument list of string-join: > > > (define line '("x" "y" "z")) > > (apply string-join (list line " ")) > "x y z" > > Best, > Shu-Hung > > On Sat, Oct 29, 2016 at 10:31 AM, <[email protected]> wrote: > > > > Hi Stephen, > > > > thanks for yoru reply ! ::) > > > > At the certain point of the program I get > > a list as parameter 'lst', which contains > > the sublists of strings. I wrote this > > function: > > > > > > (define (to-txt lst) > > (if (empty? lst) > > lst > > (let ((line (car lst))) > > (begin > > (displayln (apply string-join line " " )) ;;; WRONG SYNTAX HERE > > (to-txt (cdr lst)))))) > > > > Since I get the sublists as parameters I need an 'apply' to 'inject' > > (sorry...I am no native speaker...) 'string-join' into the list. > > > > But string-join has additional parameters, and I dont know how to > > combine those with 'apply'? > > > > PS: The resulting strings will later be processed further... the > > 'displayln' is just a placeholder... > > > > Cheers, > > Meino > > > > > > Stephen Chang <[email protected]> [16-10-29 17:16]: > >> string-join already expects a list of strings, so are you sure you want > >> apply? > >> Can you give a more specific example? > >> > >> Perhaps map or some other iteration is what you want? > >> > >> (for ([strs '(("a" "b") ("c" "D" "E"))]) > >> (displayln (string-join strs " "))) > >> > >> => > >> a b > >> c D E > >> > >> On Sat, Oct 29, 2016 at 10:27 AM, <[email protected]> wrote: > >> > Hi, > >> > > >> > ...still improving my shortwave-broadcaster-dumper... :) > >> > > >> > I have a list with sublists of strings, which I want to concatenate. > >> > Each sublist shall form one line of output. > >> > I tried 'string-append', but this gives me something like this > >> > (excerpt): > >> > "189RikisutvarpidRas1+20000-24001234567Icelandic" > >> > ...the separating #\space is missing. > >> > > >> > The according code looks like this (excerpt) > >> > > >> > (apply string-append sublist) > >> > > >> > then I found 'string-join' which has extra-parameters > >> > to define separator of all kinds. > >> > > >> > ...but...how can I express the 'apply'-instruction...with the > >> > addional parameters??? > >> > > >> > This looks something inbetween funny and weird: > >> > > >> > (apply string-join sublist " ") > >> > > >> > and racket mumbles: > >> > apply: contract violation > >> > expected: list? > >> > given: " " > >> > argument position: 3rd > >> > other arguments...: > >> > #<procedure:string-join> > >> > > >> > > >> > ? > >> > > >> > Cheers > >> > Meino > >> > > >> > > >> > > >> > > >> > > >> > -- > >> > You received this message because you are subscribed to the Google > >> > Groups "Racket Users" group. > >> > To unsubscribe from this group and stop receiving emails from it, send > >> > an email to [email protected]. > >> > For more options, visit https://groups.google.com/d/optout. > >> > >> -- > >> You received this message because you are subscribed to the Google Groups > >> "Racket Users" group. > >> To unsubscribe from this group and stop receiving emails from it, send an > >> email to [email protected]. > >> For more options, visit https://groups.google.com/d/optout. > >> > > > > -- > > You received this message because you are subscribed to the Google Groups > > "Racket Users" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to [email protected]. > > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

