2017-08-05 8 views
1

Je suis un guide d'introduction pour OCaml et un programme sur lequel je travaille ne fonctionne pas et je me demandais si je pouvais obtenir une explication.Test en OCaml

let profit_500 : int = 
    let price = 500 in 
    let attendees = 120 in 
    let revenue = price * attendees in 
    let cost = 18000 + 4 * attendees in 
    revenue - cost;; 

let test() : bool = 
    (profitTest 500) = profit_500 
;; run_test "profit at $5.00" test 

Au niveau de la ligne (profitTest 500) = profit_500 Je reçois Erreur: test de bénéfice de valeur non limitée. Quelqu'un peut-il expliquer pourquoi? C'est ma première excursion en OCaml, mais je connais quelques java. Quelqu'un peut-il aussi expliquer pourquoi le dernier ;; va avant run_test au lieu de après profit_500 (ou est-ce la même chose)?

Merci pour l'aide

+0

Je ne connais pas OCAML, mais qu'est-ce que vous attendez de '(profitTest 500) = profit_500' à faire? Ça a l'air très bien. En outre, vous n'avez probablement pas besoin de tous ces 'let ... in's. Je pense que vous devriez être en mesure de regrouper toutes les liaisons sous un seul 'let'. – Carcigenicate

+0

@Carcigenicate OCaml nécessite un 'let' pour chaque liaison. Cette syntaxe est correcte. –

+0

@ElanHamburger Vraiment? C'est malheureux. Ma faute. – Carcigenicate

Répondre

2

Il pourrait aider à préciser ce que signifie « non consolidé ». Un symbole non lié (un nom) est un symbole qui n'a pas été défini. Donc OCaml vous dit que vous n'avez pas donné de définition pour profitTest. Comme le dit @ElanHamburger, c'est vrai. Il n'y a pas de définition pour une fonction avec ce nom dans le code que vous avez montré. Si vous suivez un exemple dans un guide, la chose la plus probable est que vous devez taper la définition de profitTest (du guide) avant la définition de test comme vous le donnez.

+0

https://1drv.ms/i/s!AgZffw7HX09VgRXk-P57a7fwPFAt Ceci est la page. Merci! – user402517

+0

Ceci est une page au milieu d'une discussion. Presque certainement la définition de 'profitTest' apparaît sur une page antérieure. –