membre? fonction dans la raquette
Je suis Brian Harvey SICP conférences à partir de 2011 sur le UC Berkeley site. Il est l'aide de l' STk interprète pour enseigner à la classe et je suis à l'aide de la raquette avec DrRacket la suivre. Je suis en train de définir toutes les fonctions qu'il utilise dans la classe qui ne sont pas définis dans la raquette (c'est à dire word
, butfirst
, butlast
) pour plus de pratique.
J'ai couru dans un problème en essayant de définir des member?
. Il est capable de l'utiliser sur les listes et les chaînes, en faisant des choses comme
(member? 1 (list 1 2 3 4)) ;; works
(member? 'a '(a e i o u)) ;; works
(member? 7 17) ;; doesn't work
(member? #\e "Hello") ;; doesn't work
Voici ma définition de member?
pour qui le ci-dessus ne/ne fonctionne pas:
(define (member? u lst)
(not (equal? (member u lst) #f)))
Donc, c'est de travailler avec une liste, de sorte que les deux premiers sens qu'ils sont au travail. Est-il possible de créer une fonction pour imiter member?
dans STk? J'ai regardé les docs et il semble que les chaînes, les listes, les entiers non négatifs et un tas d'autres trucs qui sont définis comme sequence
types de données mais je ne trouve pas pertinent fonction de séquence.
Bien qu'il ne va pas aider avec le STk Régime spécifique des devoirs, mais si vous exercez les problèmes de ce livre, vous voudrez peut-être consulter le Dr Raquette de soutien pour SICP neilvandyke.org/racket-sicp.
Yep, c'est exactement ce que j'essaie de reproduire. Merci!
OriginalL'auteur gwely | 2013-03-18
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
sequence-ormap
pour cela:À tester:
Que
lambda (x)
fonction est essentiellement commeseq.forEach(function (x) { });
, droit?lambda
crée une fonction, maislambda
lui-même n'est pas une fonction. 🙂 Mais oui, il est associé à lafunction (x) ...
concept directement.OriginalL'auteur Chris Jester-Young
Maintenant que vous connaissez la Raquette fonction
sequence-ormap
ici est quelque chose pour aider à l'apprentissage de Régime:sequence-ormap
est en train de faire sous le capot? En ce qu'elle est à l'aide d'un conditionnel pour le type desequence
? Je suis en train de regarder les source mais on dirait qu'il est tout abstraite.À un certain niveau 'de la séquence ormap" doit être ramification sur les différents types: chaîne de caractères?, vecteur?, etc.
Oui, mais il le fait à l'aide d'une beaucoup plus "orienté objet": types de séquence tout simplement de mettre en œuvre une séquence de l'interface. Faire ce genre de branchement à l'intérieur de votre
member?
fonction n'est pas du tout OO. 🙂 La ramification de vs OO non OO, c'est que si vous avez besoin d'ajouter un nouveau type de séquence, c'est bien plus facile de le faire en vertu de l'approche OO."Toutes extraites de" est exactement ce que la programmation orientée objet est tout au sujet, et il vous permet d'ajouter de nouveaux types de séquence sans avoir à changer tous les lieux que l'utilisation de séquences. 🙂
Ouais, c'est la raison pour laquelle je demande. La définition d'un
member?
fonction dans OO pour toussequence
types de sens. En faisant comme ceci, cependant, la vérification de la séquence pour tous les types, semble comme un anti-modèle.OriginalL'auteur GoZoner