La plupart des langues de programmation utilisent des lambdas / fermetures. Quelle source agnostique de langue est recommandée comme le meilleur pour apprendre les bases de la Lambda? p>
lambdas / fermetures dans différentes langues: p>
5 Réponses :
the Lambda Calculus est la langue agnostique. La réponse dépend de ce que vous entendez par «bases». Au moment où vous choisissez une langue que vous avez perdue votre exigence agnostique. P>
JavaScript a des fermetures. J'ajouterais cela aussi à la liste. Java ne le fait pas encore. P>
Je pense que cela revient là où vous avez l'intention de les utiliser éventuellement. Retournez à Lisp ou au schéma, puisqu'ils sont la source, si vous voulez être une vieille école. Choisissez JavaScript ou C # ou Python si vous les utiliserez dans une langue commerciale traditionnelle. P>
@DyFFYMO: Adda Lien à la fermeture JavaScript, lien ok? +1
Java peut ne pas avoir de fonctions Lambda, mais il a des fermetures. Lorsque vous implémentez anonymement une interface, les méthodes définies ont accès aux variables extérieures, assurez-vous simplement de les marquer finale.
Les fonctions internes anonymes ne sont pas la même chose que d'avoir des fermetures intégrées. Vous ne pouvez pas transmettre cette fonction intérieure autour et que son contexte extérieur soit encore disponible.
Si vous voulez juste quelque chose de facile à digestible, lisez une introduction au calcul de la Lambda et à la programmation . Bien sûr, ce n'est pas un langage-agnostique, mais la mise en œuvre du régime est assez proche. P>
Pour une compréhension plus profonde, lisez types et programmation Langues A> - Benjamin Pierce. Programmation théorique des langues avec une étude approfondie du calcul de la Lambda. Complètement langue-agnostique. P>
@DANBEN: Merci pour les liens. +1
Je ne les apprendrais pas comme une chose "indépendante de la langue", d'abord. Je recommanderais d'en apprendre pratiquement, en les utilisant en JavaScript en premier, puis élargissez à une autre langue (comme Lisp, C #). Ensuite, si vous ressentez la nécessité d'aller plus loin, apprenez les trucs théoriques généraux. P>
Je pense que Lambda est la plus simple dans Lisp, car elle a été conçue pour ce genre de chose, et des dialectes, le schéma a tendance à être le plus simple. P>
Pas coïncidemment, Le plus grand livre d'informatique jamais écrit A > Utilise le schéma! Voici Introduction de la SICP à Lambdas a>. p>
Pour un débutant désirant apprendre les fondations théoriques, la suggestion de Danben du livre de Pierce est imbattable. P>
Mais de la liste que vous donnez, cela ressemble à ce que vous voulez est comment programmer efficacement les valeurs de fonction de première classe em>, ce que Avec cela comme arrière-plan, voici deux conseils: p>
Si vous êtes décédés sur l'apprentissage sur En tant que débutant, vous ferez peut-être mieux d'apprendre pourquoi les gens veulent utiliser ces fonctions de première classe pour commencer. Dans ce cas, lisez Pourquoi la programmation fonctionnelle compte de John Hughes. Le papier de Hughes utilise une notation qui est un peu em> langue-agnostique; Ce n'est pas la notation d'une langue actuelle, mais c'est un peu similaire à Caml, F #, Haskell et ML. P> Li>
ul> lambda code> est évalué. Vous n'allez pas obtenir cette expérience, cette information ou cette intuition dans un forfait langue-agnostique. Pire, en véritables langues, de nombreuses fonctions anonymes sont créées via application partielle des fonctions au curry em> plutôt que via explicites
lambda code>; La plupart des gens utilisent des fonctions de première classe trouvent fortement des lambdas plutôt ennuyeux et difficiles à lire. P>
lambda code>, fais quelque chose avec le schéma. Les schémas tels que les fonctions de première classe, et la notation du régime force des Lambdas plus explicites sur le programmeur que de nombreuses autres langues fonctionnelles. P> Li>
Pour une couverture plus profonde de fermetures en JavaScript, lisez: Jibbering.com/faq/faq_notes/clusuures. HTML