Articles of f #

Fonctions avec types de parameters génériques

J’essaie de comprendre comment définir une fonction qui fonctionne sur plusieurs types de parameters (par exemple, int et int64). Si je comprends bien, la surcharge de fonctions n’est pas possible dans F # (certainement le compilateur se plaint). Prenons par exemple la fonction suivante. let sqrt_int = function | n:int -> int (sqrt (float n)) […]

Comment lire un fichier dans une séquence de lignes dans F #

Ceci est la version C #: public static IEnumerable ReadLinesEnumerable(ssortingng path) { using ( var reader = new StreamReader(path) ) { var line = reader.ReadLine(); while ( line != null ) { yield return line; line = reader.ReadLine(); } } } Mais la traduction directe nécessite une variable mutable.

Quelqu’un at-il des recommandations pour commencer dans la functional programming?

Je suis à la recherche de certains livres électroniques qui faciliteront mon apprentissage de la functional programming. Je n’ai pas encore décidé avec quelle langue je vais aller, mais j’ai remarqué une assez grande partialité envers LISP, Haskell et F # parmi la communauté sur StackOverflow. Pour l’instant, je ne sais pas quelle direction je […]

Comment définir le y-combinator sans “let rec”?

Dans presque tous les exemples, un combinateur y dans les langages de type ML est écrit comme suit: let rec yfx = f (yf) x let factorial = y (fun f -> function 0 -> 1 | n -> n * f(n – 1)) Cela fonctionne comme prévu, mais on a l’impression de sortingcher pour […]

Pourquoi l’opérateur de puissance en F # ne fonctionne-t-il que pour les nombres à virgule flottante?

Je n’ai jamais vu une langue avoir exposant ou opérateur de puissance ne prenant que des nombres à virgule flottante? Par exemple: 2 ** 2 jette une erreur The type ‘int’ does not support any operators named ‘Pow’ Existe-t-il des raisons valables pour cette décision de conception?

Meilleure façon de condenser une liste de types d’option sur des éléments qui ne sont pas différents?

J’ai un peu de mal à passer d’une liste d’options à une liste contenant uniquement les éléments Some. Ma première tentative était: let ga = List.filter (fun xx -> match xx with | Some(g) -> true | None -> false) gao Mais bien sûr, ce type de résultat est toujours une liste d’options. Je ne […]

F # List.map équivalent en C #?

Y at-il un équivalent à la fonction List.map de F # en C #? c’est-à-dire appliquer une fonction à chaque élément de la liste et renvoyer une nouvelle liste contenant les résultats. Quelque chose comme: public static IEnumerable Map(this IEnumerable source, Func funky) { foreach (TSource element in source) yield return funky.Invoke(element); } Existe-t-il déjà […]

Explication de la correspondance entre modèles et commutateur

J’ai essayé d’expliquer la différence entre les instructions de changement et la correspondance de motif (F #) à quelques personnes, mais je n’ai pas vraiment été capable de bien l’expliquer … la plupart du temps, elles me regardaient et disaient “pourquoi n’utilisez pas simplement if..then..else “. Comment leur expliqueriez-vous cela? MODIFIER! Merci à tous pour […]

C # / F # Comparaison des performances

Existe-t-il une comparaison des performances C # / F # sur le Web pour montrer l’utilisation correcte du nouveau langage F #?

Pourquoi la version F # de ce programme est-elle 6 fois plus rapide que celle de Haskell?

Version Haskell (1.03s): module Main where import qualified Data.Text as T import qualified Data.Text.IO as TIO import Control.Monad import Control.Applicative (()) import Data.Vector.Unboxed (Vector,(!)) import qualified Data.Vector.Unboxed as V solve :: Vector Int -> Int solve ar = V.foldl’ go 0 ar’ where ar’ = V.zip ar (V.postscanr’ max 0 ar) go sr (p,m) = […]