Domanda

lo voglio per estrarre tutte le parole che hanno una lettera e in loro. per esempio.

(ewords '(i e ee o oo)) -> '(e ee)

usi 61a conferenza di Berkeley (prima parola') per estrarre il primo carattere della parola. Tuttavia DrScheme urla contro di me quando cerco di farlo. Come si prendono il primo carattere della parola? come

(first 'word)->'w.
È stato utile?

Soluzione

È necessario convertirlo in una stringa in modo esplicito:

(first (symbol->string 'word)) -> "w"

(non sono sicuro che la parte superiore della mia testa se first opera su stringhe. È possibile utilizzare string->list per convertire in una lista e poi prendere la first se non lo fa.)

EDIT: Potrebbe essere più facile da passare intorno stringhe invece di simboli, in primo luogo - per designare una stringa, usare le virgolette (es. (ewords '("i" "e" "ee" "o" "oo"))) Non so se questa è la vostra intenzione, ma dal momento che' re di apprendimento, ho pensato che avrei dovuto parlare della distinzione.

Altri suggerimenti

Simboli sono principalmente destinate ad essere valori atomici, cioè, non sono generalmente smontati ed esaminati. Se si vuole veramente farlo è necessario prima fare alcune conversioni di tipo:

    ; #\a -> a
    (define (char->symbol chr)
      (string->symbol (list->string (list chr))))

    ; abc -> (a b c)
    (define (symbol->list sym)
      (map char->symbol 
           (string->list (symbol->string sym))))

È ora possibile utilizzare first:

    > (first (symbol->list 'word))
    w

Dipende, qual è la definizione di dati per una "parola"?

Si tratta di una sequenza di caratteri (aka una stringa)? Si tratta di un elenco di caratteri? Una lista di stringhe? Un elenco di simboli?

Ecco una funzione che soddisfa i criteri, ma come si può vedere, è contorta e mi chiedo se è ciò che si vuole veramente:

; symbol->list-of-symbols : symbol -> (ListOf symbol)
; To destructure a symbol into a list of its constituent parts
(define (symbol->list-of-symbols sym)
  (map (lambda (s) (string->symbol (string s))) 
       (string->list (symbol->string sym))))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top