Je viens d'installer la dernière version de F #, et j'ai ouvert une vieille solution pour voir ce qu'elle me dirait.Avertissement d'espace de noms F # 2.0
Il est une solution multi-fichiers, où le premier fichier comprend des 'fonctions d'extension' du module de liste:
module List =
///Given list of 'rows', returns list of 'columns'
let rec transpose lst =
match lst with
| (_::_)::_ -> List.map List.hd lst :: transpose (List.map List.tl lst)
| _ -> []
Le compilateur n'aime ça, et dit:
Fichiers dans les bibliothèques ou les applications multi-fichiers doit commencer par un espace de noms ou une déclaration de module, par exemple 'Espace de noms SomeNamespace.SubNamespace' ou 'Module SomeNamespace.SomeModule'
Mais si je fais ceci:
module Foo.List =
Il dit:
Une abréviation du module doit être un nom simple, pas un chemin
Que manque-t-il ici? Et quelle est la solution pour ce cas «spécial» où j'étends un module qui vient d'ailleurs?
hd -> tête et tl -> queue? Ces gens ne se soucient-ils pas du code golf? :) – Benjol
:) - Ajoutez-les de nouveau puisque vous ajoutez déjà des fonctions au module Liste ... –
L'autre moitié de la réponse, qui est très confuse, est que si vous n'avez pas d'espace de nom, et juste un module, vous devez Ne mettez pas un = après la déclaration du module. Mais si vous avez un espace de noms, vous avez besoin d'un = – Benjol