Découverte et affaire de modules
Bonjour à tous.
N'ayant jamais pratiqué le moindre langage fonctionnel qui soit et y voyant en général le Mal, j'ai tenté quand même le pas avec F#, ce qui me permettait de rester dans un environnement connu. Hé bien je dois dire que je tiens encore après plus d'une semaine d'immersion complète ! ;)
J'y vois deux raisons : tout d'abord c'est nouveau, complètement nouveau pour moi, une bonne raison de m'y plonger avec intérêt; et ensuite les défis à relever sont intéressants (c'est totalement incompréhensible... :P), donc j'y reste, question de fierté personnelle ! Nan mé...
Reste que les modules me jouent des tours et que j'aurais besoin des lumières d'un savant!
Je suis en Windows XP SP3 avec Visual Studio 2010 Shell, F# 2.0.0.0 et Dotnet 4.0.30319, ce qui semble assez moderne.
Problème 1:
Citation:
Envoyé par
LLB
Chaque fichier (sauf le main) doit indiquer son nom de module ou namespace (au lieu de prendre le nom du fichier).
(Extrait d'un message pour la dernière livraison en 1.9.quelque-chose)
D'après mes essais (dans la configuration citée ci-dessus), il faut aussi le module dans le main, faute de quoi on a:
Citation:
Erreur 1 Files in libraries or multiple-file applications must begin with a namespace or module declaration, e.g. 'namespace SomeNamespace.SubNamespace' or 'module SomeNamespace.SomeModule'
Problème 2:
Voici mes 2 fichiers, Program.fs et Truc.fs
Code:
1 2 3 4 5 6 7 8 9
| module Program
open System
open Truc
let a = Truc.N //Test avec le préfixe Truc
let b = F 100 //Test sans le préfixe Truc
let c = Truc.Chouette.A //Test avec
let d = Chouette.A //Test sans
printfn "a = %d, b = %d" a b
Console.ReadLine() |> ignore |
Code:
1 2 3 4 5 6
| module Truc
let N = 1234
let F x = x + 1
module Chouette =
let A = 123 |
Tout ce que j'affiche en rouge est rejeté par Visual Studio avec le message "Erreur 1 The namespace or module 'Truc' is not defined" ou identique. A noter qu'il trouve bien System...
Donc, je résume: dès que je veux utiliser plus d'un fichier.fs, il faut mettre des modules, et pourtant il ne les voit pas. Kessifokejfai ?
Merci :)