At this point it is mostly a question of how restrictive your teacher wishes to be by requiring that you implement this as a single function. If you are using full Racket, it is possible to define a helper function inside of a larger function. Here is the most direct way to translate your existing code:
#lang racket (define *lex* '((cat gato katze) (dog perro hund) (eats come frisst) (jumps salte springt) (the el die))) (define (translate-sentence satz lexikon sprache) (define (translate-word wort lexikon sprache) (cond [(null? lexikon) '(Wort wurde nicht gefunden)] [(or (equal? wort (first (first lexikon))) (equal? wort (first (rest (first lexikon)))) (equal? wort (first (rest (rest (first lexikon)))))) (cond [(equal? sprache 'english) (first (first lexikon))] [(equal? sprache 'spanisch) (first (rest (first lexikon)))] [(equal? sprache 'deutsch) (first (rest (rest (first lexikon))))])] [else (translate-word wort (rest lexikon) sprache)])) (cond [(null? satz) '()] [else (cons (translate-word (first satz) lexikon sprache) (translate-sentence (rest satz) lexikon sprache))])) Can you see a way to make remove the sprache argument from translate-word? -Philip On Sun, Jun 25, 2017 at 3:03 PM, <philipp.thiess1...@gmail.com> wrote: > Thanks guys I got a solution! > > #lang racket > > > > (define *lex* > '((cat gato katze) > (dog perro hund) > (eats come frisst) > (jumps salte springt) > (the el die))) > > > (define (translator wort lexikon sprache) > > (cond ((null? lexikon) '(Wort wurde nicht gefunden)) > > ((or (equal? wort (first (first lexikon))) > > (equal? wort (first (rest (first lexikon)))) > > (equal? wort (first (rest (rest (first lexikon)))))) > > > (cond > ((equal? sprache 'english) (first (first lexikon))) > > ((equal? sprache 'spanisch) (first (rest (first lexikon)))) > > ((equal? sprache 'deutsch) (first (rest (rest (first lexikon)))))) > > ) > > > (else (translator wort (rest lexikon) sprache)) > > )) > > (define (translate2 satz lexikon sprache) > (cond((null? satz) '()) > (else (cons (translator (first satz) *lex* sprache) (translate2 > (rest satz) lexikon sprache))))) > > > So now I just wanna know if there is a way to make this in one function? > Is it possible to make a function inside a function and if yes how? > > -- > 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 racket-users+unsubscr...@googlegroups.com. > 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 racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.