IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> ocaml sous mac
Options
audionuma
posté 7 Oct 2016, 11:57
Message #1


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 909
Inscrit : 27 Apr 2004
Membre no 18 176



Bonjour,
je suis en train de suivre le mooc https://www.fun-mooc.fr/courses/parisdidero...session02/about.
Je me suis donc intsallé les outils ocaml via macports comme suggéré ici : http://ocaml.org/docs/install.html
(Je suis sous Mac OS 10.10.5)
Donc :
Code
$ which ocaml
/opt/local/bin/ocaml
$ which opam
/opt/local/bin/opam


Et je peux utiliser le toplevel :
Code
$ ocaml
        OCaml version 4.02.2

Cannot find file topfind.
Unknown directive `thread'.
# let a = 2 + 1;;
val a : int = 3


Bon, y'a bien ces deux message d'alerte, mais ça fonctionne.

Bon, ensuite, j'entends parler de utop comme alternative au toplevel par défaut.
J'essaye donc d'installer utop comme indiqué ici : https://github.com/diml/utop
Code
$ opam install utop

The following actions will be performed:
  ∗  install lwt         2.4.5                [required by utop]
  ∗  install lambda-term 1.6                  [required by utop]
  ∗  install utop        1.14
===== ∗  3 =====
Do you want to continue ? [Y/n] Y

=-=- Gathering sources =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[lambda-term] Archive in cache
[lwt] Archive in cache
[utop] Archive in cache

=-=- Processing actions -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[ERROR] The compilation of lwt failed at "./configure --disable-libev
        --enable-react --enable-ssl --enable-unix --enable-extra
        --enable-preemptive --disable-glib --disable-text".
Processing  1/3: [lwt: ocamlfind remove]
#=== ERROR while installing lwt.2.4.5 =========================================#
# opam-version 1.2.2
# os           darwin
# command      ./configure --disable-libev --enable-react --enable-ssl --enable-unix --enable-extra --enable-preemptive --disable-glib --disable-text
# path         /Users/manu/.opam/system/build/lwt.2.4.5
# compiler     system (4.02.2)
# exit-code    1
# env-file     /Users/manu/.opam/system/build/lwt.2.4.5/lwt-13318-c61e7b.env
# stdout-file  /Users/manu/.opam/system/build/lwt.2.4.5/lwt-13318-c61e7b.out
# stderr-file  /Users/manu/.opam/system/build/lwt.2.4.5/lwt-13318-c61e7b.err
### stderr ###
# [...]
# W: Failure("When looking for findlib package camlp4, directory /opt/local/lib/ocaml/camlp4 return doesn't exist")
# W: Failure("When looking for findlib package camlp4.quotations.o, directory /opt/local/lib/ocaml/camlp4 return doesn't exist")
# W: Field 'pkg_camlp4_extend' is not set: When looking for findlib package camlp4.extend, directory /opt/local/lib/ocaml/camlp4 return doesn't exist
# W: Failure("When looking for findlib package camlp4, directory /opt/local/lib/ocaml/camlp4 return doesn't exist")
# W: Failure("When looking for findlib package camlp4, directory /opt/local/lib/ocaml/camlp4 return doesn't exist")
# W: Failure("When looking for findlib package camlp4.quotations.o, directory /opt/local/lib/ocaml/camlp4 return doesn't exist")
# E: Cannot find findlib package camlp4
# E: Cannot find findlib package camlp4.extend
# E: Cannot find findlib package camlp4.quotations.o
# E: Failure("3 configuration errors")



=-=- Error report -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The following actions were aborted
  ∗  install lambda-term 1.6
  ∗  install utop        1.14
The following actions failed
  ∗  install lwt 2.4.5
No changes have been performed


Et pourtant :
Code
$ opam install camlp4
[NOTE] Package camlp4 is already installed (current version is 4.02.0).

Voici le contenu de mon .ocamlinit :
Code
(* Added by OPAM. *)
let () =
  try Topdirs.dir_directory (Sys.getenv "OCAML_TOPLEVEL_PATH")
  with Not_found -> ()
;;
#use "topfind";;
#thread;;
#camlp4o;;
#require "core.top";;
#require "core.syntax";;
open Core.Std


et
Code
$ echo $OCAML_TOPLEVEL_PATH

$


Est-ce que je dois exporter cette variable dans .profile ? Si oui, vers quoi doit-elle pointer ? Le problème est-il ailleurs ?

Merci,
Manu


--------------------
Membre du club des AIPBP (Anciens Inscrits Pas Beaucoup de Posts) Voir la liste
Go to the top of the page
 
+Quote Post
Jaypee
posté 8 Oct 2016, 07:02
Message #2


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 344
Inscrit : 29 Aug 2002
Membre no 3 340



Salut Manu,

Félicitation pour ce choix. J'ai suivi le même cours l'an dernier, ai pu seulement tenir le rythme sur la moitié. Sur le plan de la programmation, il permet d'acquérir un peu de la vision fonctionnelle qui servira aussi pour Swift. OCaml, c'est un peu l'école française du fonctionnel comparable à Haskell ou ML pour les écossais ou les américains. Par ailleurs, F# de Microsoft est également de la même famille de langage.

Côté outillage, je n'ai pas eu les difficultés que tu décris, et ne peux guère t'aider. J'avais suivi le MOOC de l'université de Washington pour SMLet là, l'environnement de travail, c'était emacs, et un peu un défi d'apprendre et l'outil et le langage, mais au final j'en suis content, Emacs c'est parfois utile, comme par exemple, éditer en place un fichier texte d'un .tgz, on ouvre directement le .tgr, on navigue dans son contenu et on ouvre le fichier souhaité. Le cours est aussi sur YouTube:
https://www.youtube.com/playlist?list=PL-eV...JDT8rIcCa12DyAx

Pour info, les versions que j'ai installées:
opam --version
1.3.0~dev

ocaml -version
The OCaml toplevel, version 4.02.1

[jaypee:~]$ ls -l `which ocaml`
lrwxr-xr-x 1 jaypee admin 34 19 déc 2015 /usr/local/bin/ocaml -> ../Cellar/ocaml/4.02.1_2/bin/ocaml

Apparemment, j'ai installé avec Homebrew, pas par les Mac Ports

L'IDE Eclipse est aussi utilisable: http://deptinfo.cnam.fr/new/spip.php?article1361

J-P

Ce message a été modifié par Jaypee - 8 Oct 2016, 07:23.
Go to the top of the page
 
+Quote Post
audionuma
posté 8 Oct 2016, 09:33
Message #3


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 909
Inscrit : 27 Apr 2004
Membre no 18 176



Bonjour Jaypee,
merci pour les infos.
Je verrai bien si j'arrive à suivre le rythme jusqu'à la fin, pour le moment, ça va. Il faut noter que je fais ça par plaisir, il n'y a pas d'enjeu professionnel.

Sur l'installation de utop, j'ai un peu progressé ce matin puisque j'ai remarqué qu'il existe un paquet macports pour camlp4:
Code
$ sudo port install ocaml-camlp4

Et
Code
$ opam install utop

va désormais un peu plus loin, mais termine en échec malgré tout.
Code
=-=- Processing actions -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
∗  installed lwt.2.4.5
∗  installed lambda-term.1.6
[ERROR] The compilation of utop failed at "ocaml setup.ml -build".
Processing  3/3: [utop: ocamlfind remove]
#=== ERROR while installing utop.1.14 =========================================#
# opam-version 1.2.2
# os           darwin
# command      ocaml setup.ml -build
# path         /Users/manu/.opam/system/build/utop.1.14
# compiler     system (4.02.2)
# exit-code    1
# env-file     /Users/manu/.opam/system/build/utop.1.14/utop-14123-b76d46.env
# stdout-file  /Users/manu/.opam/system/build/utop.1.14/utop-14123-b76d46.out
# stderr-file  /Users/manu/.opam/system/build/utop.1.14/utop-14123-b76d46.err
### stdout ###
# [...]
# Ill_formed_ast (_, _)
# /Users/manu/.opam/system/bin/ocamlfind ocamlc -c -g -package findlib -package lambda-term -syntax camlp4o -package lwt.syntax -package threads -syntax camlp4o -thread -ppopt syntax/pa_optcomp.cmo -ppopt -let -ppopt 'findlib_version=(1, 5)' -I /opt/local/lib/ocaml/compiler-libs -I src/lib -o src/lib/uTop_main.cmo src/lib/uTop_main.ml
# + /Users/manu/.opam/system/bin/ocamlfind ocamlc -c -g -package findlib -package lambda-term -syntax camlp4o -package lwt.syntax -package threads -syntax camlp4o -thread -ppopt syntax/pa_optcomp.cmo -ppopt -let -ppopt 'findlib_version=(1, 5)' -I /opt/local/lib/ocaml/compiler-libs -I src/lib -o src/lib/uTop_main.cmo src/lib/uTop_main.ml
# findlib: [WARNING] Interface errors.cmi occurs in several directories: src/lib, /opt/local/lib/ocaml/compiler-libs
# findlib: [WARNING] Interface topdirs.cmi occurs in several directories: /opt/local/lib/ocaml/compiler-libs, /opt/local/lib/ocaml
# File "src/lib/uTop_main.ml", line 96, characters 41-45:
# Error: This expression has type tool_name:string -> Parsetree.structure
#        but an expression was expected of type
#          Parsetree.structure = Parsetree.structure_item list
# Command exited with code 2.
### stderr ###
# File "setup.ml", line 254, characters 8-26:
# Warning 3: deprecated: String.set
# Use Bytes.set instead.
# File "setup.ml", line 2509, characters 6-24:
# Warning 3: deprecated: Lazy.lazy_from_fun
# Use Lazy.from_fun instead.
# E: Failure("Command ''/opt/local/bin/ocamlbuild' syntax/optcomp.cma src/lib/utop.cma src/lib/utop.cmxa src/lib/utop.a src/lib/utop.cmxs src/camlp4/utop-camlp4.cma src/camlp4/utop-camlp4.cmxa src/camlp4/utop-camlp4.a src/camlp4/utop-camlp4.cmxs src/top/uTop_top.byte src/top/uTop_top_full.byte -tag debug' terminated with error code 10")



=-=- Error report -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The following actions failed
  ∗  install utop 1.14
The following changes have been performed
  ∗  install lambda-term 1.6  
  ∗  install lwt         2.4.5

The former state can be restored with:
    opam switch import "~/.opam/system/backup/state-20160908075634.export"


Bon, je vais faire sans pour le moment ...
(C'est dommage, le toplevel standard manque de quelques trucs utiles : coloration syntaxique, rappel des commandes précédentes avec flèche-haut, navigation dans le texte avec flèche-gauche ou flèche-droite). Et je ne vais pas me plonger dans emacs maintenant ;-)


--------------------
Membre du club des AIPBP (Anciens Inscrits Pas Beaucoup de Posts) Voir la liste
Go to the top of the page
 
+Quote Post
Jaypee
posté 8 Oct 2016, 20:09
Message #4


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 344
Inscrit : 29 Aug 2002
Membre no 3 340



En moyenne, l'installation avec homebrew (commande brew install) me semble bien plus facile.

J'ai réussi depuis la version que j'avais à tout mettre à jour y compris l'intégration colorée avec utop

[jaypee:~]$ ocaml -version
The OCaml toplevel, version 4.03.0

[jaypee:~]$ opam --version
1.3.0~dev

Je ne sais comment cette dernière a été installée, la version 1.3.0~dev est la dernière dev puisque la dernière version stable est 1.2.2

En revanche, El Capitan puis Sierra semblent avoir renforcé la rigueur sur les permissions (hypothèse personnelle) car un brew update échoue avec un "/usr/local must be writable"

La résolution de ce problème passe par un ajustement ciblé des permissions dans cette seule arborescence, en autorisant l'écriture au groupe admin, auquel appartient l'utilisateur principal de macOS:

sudo chgrp -R admin /usr/local
sudo chmod -R g+w /usr/local

la commande utop affiche bien la petite interface graphique en mode caractère, à base de curses probablement.

J-P

Ce message a été modifié par Jaypee - 9 Oct 2016, 10:11.
Go to the top of the page
 
+Quote Post
Jaypee
posté 10 Oct 2016, 06:19
Message #5


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 344
Inscrit : 29 Aug 2002
Membre no 3 340



Outils mis à part, ce MOOC est d'un niveau certain, les exercices présupposent une familiarité certaine avec les maths (modulo, test de primarité et diviseurs < racine du nombre)
Le challenge est donc à tous les niveaux. J'ai rattrapé la première semaine, pas trop difficilement car j'étais déjà passé une fois (je suis un redoublant), et suite aux retours faits sur la première édition, les validations ne sont plus seulement en mode "mastermind", elles expliquent quelques détails.

J-P

Ce message a été modifié par Jaypee - 10 Oct 2016, 06:21.
Go to the top of the page
 
+Quote Post
audionuma
posté 10 Oct 2016, 09:23
Message #6


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 909
Inscrit : 27 Apr 2004
Membre no 18 176



<H.S.>
@ Jaypee : Tu veux dire que tu suis le mooc en ce moment ?
</H.S.>


--------------------
Membre du club des AIPBP (Anciens Inscrits Pas Beaucoup de Posts) Voir la liste
Go to the top of the page
 
+Quote Post
Jaypee
posté 10 Oct 2016, 13:00
Message #7


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 344
Inscrit : 29 Aug 2002
Membre no 3 340



Oui, je me suis réinscris cette année smile.gif
- Il faut faire attention à faire tous les exos/devoirs, utiliser les flèches "page suivante", lorsqu'il y a plusieurs icones genre liste.
- Il faut vérifier dans "Progression" pour voir si on a rien raté. Il doit y avoir des barres partout là où on a complété un exo/devoir

J-P

Ce message a été modifié par Jaypee - 10 Oct 2016, 13:38.
Go to the top of the page
 
+Quote Post
audionuma
posté 14 Oct 2016, 18:21
Message #8


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 909
Inscrit : 27 Apr 2004
Membre no 18 176



Bon, en fait :

Code
$ opam update
$ opam upgrade
$ opam install utop


m'a finalement permis d'installer utop !

<HS>
Grrrr ... je me suis bien arraché les cheveux sur l'exercice des trie, notamment la fonction insert, mais j'en suis venu à bout.
</HS>


--------------------
Membre du club des AIPBP (Anciens Inscrits Pas Beaucoup de Posts) Voir la liste
Go to the top of the page
 
+Quote Post
Jaypee
posté 14 Oct 2016, 21:51
Message #9


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 344
Inscrit : 29 Aug 2002
Membre no 3 340



J'ai remis en marche mon Eclipse avec ocaIDE.

Je n'ai pas encore rattrapé la semaine n°3, je viens de finir la petite base de donnée.
J'ai dû lâcher prise sur les tableaux (is_sorted et la recherche dicho) pour pouvoir avancer mais je suis presque au taquet pour le moment.

Chapeau ! en tout cas, car faut vraiment s'accrocher smile.gif

J-P

Ce message a été modifié par Jaypee - 14 Oct 2016, 21:52.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 19th August 2018 - 02:58