11
votes

Code source des applications Web fonctionnelles bien conçues?

Quels sont les exemples d'applications Web fonctionnelles bien conçues (par opposition aux objectifs orientées objet) qui rendent leur code source disponible? J'étudie actuellement le pirateful News SOURCE Mais j'aimerais voir d'autres exemples non triviaux, idéalement dans Clojure .

Pour MVC, il y a beaucoup de rails et d'applications de PHP, de cadres et de didacticiels pour étudier - Qu'est-ce qui existe pour une programmation fonctionnelle?


3 commentaires

L'arc et le clojure sont à peine des langues fonctionnelles. Jetez un coup d'œil à HIST: Happ.org


Peut-être que la recherche de «applications Web basées sur la continuité» pourrait vous apporter des résultats intéressants.


Cadre intéressant et article - Merci! Avez-vous des liens vers de réelles implémentations de ces idées? Par exemple, un système de magasin à Haskell, un logiciel de CMS ou un simple blog basé sur une continuité? J'aime apprendre des solutions éprouvées qui vivent quelque part.


3 Réponses :


7
votes

Il y a:

  • Compojure (Clojure)
  • WebServer de schéma PLT (schéma PLT)
  • ErlyWeb (erlang)
  • Seaside (SmallTalk)

    Cette liste est suffisante pour vous occuper d'un échantillon de langues fonctionnelles avec des caractéristiques différentes:

    • Clojure: Multi-Paradigm ?, Flexible? Ce n'est pas une langue fonctionnelle pure et, bien qu'il soit préférable de programmer dans un style fonctionnel, ce n'est pas strictement nécessaire. Vous pouvez écrire un oop de style Java via Java Interop, ou vous pouvez abstraire à l'abri de celui-ci à l'aide de multi-méthodes. Il y a beaucoup de flexibilité là-bas, bien qu'il soit encore un peu tôt pour dire s'il est juste "flexible" ou "multiparadigm" de la manière dont les LISP commun sont. Conçu, en partie, être un LISP qui gère facilement la concurrence, elle tire en réalité beaucoup de cibles, d'où la désignation flexible ou multiparadigme.
    • schéma: plus près d'être un langage fonctionnel pur que le clojure, il pousse le programmeur un peu plus avec force dans un style fonctionnel que le vêtement.
    • Erlang: Programmation fonctionnelle construite pour une concurrence fiable. ErlyWeb est construit sur une plate-forme conçue pour être hautement concurrente.
    • SmallTalk: Programmation fonctionnelle hautement oo (les structures de contrôle même sont des objets dans le système d'objet et non des constructions syntaxiques).

      Si vous voulez voir comment WebApps examinent une langue fonctionnelle «à tout prix», la suggestion de Jrockway est celle à regarder.


5 commentaires

Pour une introduction au serveur Web de PLT Scheme, consultez docs.plt-scheme.org/continue .


Pourriez-vous s'il vous plaît expliquer pourquoi le serveur Web du schéma PLT et la mer sont répertoriés ici? Leur mise en œuvre est-elle de bons exemples de programmation fonctionnelle?


@Vijay, les deux interactions de contrôle entre le serveur Web et le client à l'aide de la continuation. Ce serait la caractéristique de l'approche fonctionnelle de la programmation Web. Une description de cela peut être trouvée dans Yahoo! Brevet sur les serveurs Web basés sur la continuation:
Google.com/...
Ce brevet est venu de l'œuvre de Paul Graham par écrit ce qui deviendrait Yahoo! Les magasins dans Lisp de retour au milieu des années 90. Vérifiez également le commentaire de Fortran à la question initiale pour plus d'informations sur les serveurs Web basés sur la suite.


Eh bien, autant que je sache, les continuations n'ont rien à voir avec la programmation fonctionnelle.


en.wikipedia.org/wiki/continuation continuations sont la façon dont le langage de programmation fonctionnel peut accorder un accès à la pile. Ils sont l'équivalent fonctionnel des déclarations GOTO. Bien sûr, tout dépend de ce que vous voulez dire lorsque vous dites «fonctionnels» et il est possible de limiter la signification de ce mot à une étendue que rien n'est «fonctionnel» mais un ensemble de phénomènes très restreints. C'est comme tu veux. Cependant, il doit être reconnu, il s'agit d'une question de perspective et la plupart des gens examineront les continuations comme caractéristiques des langues «fonctionnelles».




2
votes

Weblocks est un cadre fonctionnel orienté objet éprouvé qui s'inspire de la mer.

Il est écrit dans les lisp communs et deux exemples de base (Weblocks-Demo, simple blog) peuvent être trouvés ici: http://bitbucket.org/s11001001/weblocks-dev/src/tip/examples/


1 commentaires

mais ce n'est pas fonctionnel, voir la question ci-dessus