Comment sont fondamentalement différents push-pull et arrowized PRF?
Je veux étudier PRF en Haskell, mais c'est un peu difficile de décider sur une bibliothèque à utiliser.
Beaucoup semblent être morts tentatives, certains semblent avoir été ressuscité " (tels que l'activité récente sur Yampa).
De ce que j'ai lu, il semble qu'il y a deux "types" de PRF: push-pull (PRF comme dans Réactive-banane) sur un côté et arrowized PRF (comme dans Yampa) sur l'autre côté. Il semble qu'il y a également quelques "classiques PRF" au moment de Fran et FrTime, mais je n'ai pas repéré d'activité récente dans ces.
-
Sont ces deux (ou trois) vraiment approches fondamentalement différentes de PRF?
-
Est une théorie obsolète, tandis que les autres seraient les "choses de l'avenir"?
-
Ou ont-ils d'évoluer en parallèle, s'adressant à différentes fins?
-
Je n'ai citer que les plus éminents de la bibliothèque de chaque catégorie, ou il y en a d'autres options à considérer (Sodium, Netwire, et al)?
J'ai enfin regardé le parler de Evan Czaplicki recommandé dans les commentaires par J. Abrahamson. Il est très intéressant et a aider à clarifier les choses pour moi. Je le recommande fortement à toute personne qui trouve cette question intéressante.
- Vous pourriez être intéressé par ertes " (le netwire de l'auteur) avis: stackoverflow.com/a/13344292/414413
- Très rapidement:
reactive-banana
est certainement basé sur l'extraction de ne pas pousser-tirer.reactive
est push-pull.Yampa
etnetwire
sont arrowized. Il y a des Prf qui permettent l'accumulation des valeurs" mais ne permettent pas de "commutation", Prf qui permettent de "commutation", mais pas "l'accumulation des valeurs". À la fois de ceux qui sont "simples" PRF. Arrowized PRF permet de passer et de s'accumuler et utilise les flèches pour contrôler le danger de la combinaison de ces caractéristiques. Monadique PRF commereactive-banana
,sodium
, etelerea
utiliser d'autres minutieuse des mécanismes pour s'assurer que la commutation et l'accumulation n'interagissent pas trop. - Arrowized PRF a également la fonction propre que les signaux sont toujours indiquées dans le contexte de leurs intrants qui vous permet de transformer les sorties covariantly et les entrées contravariantly afin de mieux simuler interactive PRF. Voir Véritablement Fonctionnelle des Interfaces Utilisateur par Courtney et Elliott pour un excellent exemple de cette fonctionnalité.
- Vous pourriez également être intéressé par le talk "Contrôle du Temps et de l'Espace"> par Elm auteur Evan Czaplicki. À mon avis, il parvient à donner un bon aperçu de haut niveau sur le PRF de l'espace de conception et les compromis impliqués.
- Merci J. Abrahamson et DanielM pour vos commentaires.
- Je pense que vous aurez votre réponse ici.. stackoverflow.com/questions/10000074/...
- Je voulais juste de noter, que
reactive-banana
n'ont pas de monadique, mais une interface applicative. - La base de l'API est applicative, oui, mais le Commutation de l'API introduit la monade. J'avoue que sa nature différente de Sodium/Elerea, cependant.
- Peut-être vous pouvez définir un acronyme la première fois que vous l'utilisez (PRF).
- Selon hackage, réactif-la banane est type push, ne pas le tirer à base de...
Vous devez vous connecter pour publier un commentaire.
J'ai pris un voyage à Haskell.org pour étudier votre question, Ce que j'ai trouvé sont deux documents importants que vous devez lire pour approfondir vos recherches, et j'ai fais construire ma réponse à votre question à partir de ces articles de recherche.
Push-Pull PRF par Conal Elliott
La généralisation des Monades de Flèches par John Hughes
Oui, mais aussi pas. Selon Elliot, pousser est piloté par les données de PRF de l'évaluation et de pull se rapporte à ce qui est appelé "la demande" conduite de l'évaluation. L'auteur recommande de tirer parce que pousser a tendance à stagner dans entre les entrées de données. Voici l'essentiel: push-pull combine et les soldes de ces comportements pour le but principal de minimum la nécessité de recalculer les valeurs. C'est simple; exploitation de FRP avec push-pull accélère la capacité de réagir. Flèche est une autre technique pour l'utilisation de résumé types de lier les valeurs et les évaluer simultanément. Tous ces concepts sont fondamentalement différents. Mais ne prenez pas mon mot pour cela:
Ainsi, Flèche contradiction avec l'objectif de pousser-tirer. Cela ne signifie pas que vous ne pouvez pas utiliser tout à la fois, juste qu'il serait complexe, et il ya certaines choses que vous ne pouvez pas calculer sans abstrait Flèche types.
Je n'ai pas trouvé d'érudition avis sur les approches sont "la voie de l'avenir." Notons seulement que les flèches peuvent gérer la simultanéité particulièrement bien. Si vous pouviez mettre en œuvre des flèches et utilisez push-pull afin de minimiser les calculs, ce serait la voie de l'avenir.
Oui, elles visent des objectifs distincts. Comme je l'ai dit, ils peuvent être formulés ensemble, mais il est difficile à mettre en œuvre et même si il ne fonctionne pas, il serait probablement nier le réactif de vitesse avantages de push-pull.
C'est subjectif, mais Réactive et Yampa semblent être les plus souvent citées pour les bibliothèques de langue pour les PRF. Je dirais Réactif par Conal Elliott a des racines profondes, et Yampa est établi ainsi. D'autres projets comme Netwire se pose en tant que remplaçants, mais il pourrait être un certain temps avant de remplacer les géants.
Espérons que cette aide! Comme je l'ai dit de lire les articles, je l'ai souligné va vous donner une meilleure idée de la distance sémantique entre la flèche, pousser et tirer.