• # Haskell pour les nuls

    Posté par . En réponse à la dépêche Sortie de GHC 8.2.1. Évalué à 2. Dernière modification le 07 août 2017 à 22:30.

    Bon, je ne connaissais jusqu'ici Haskell que de nom.
    J'ai installé la version 8.2.1 sur mon ordi qui est sous Gentoo. J'ai fait le classique "hello world!" en créant un source (hello.hs) contenant :
    main = putStrLn "Hello, World!"

    À la ligne de commande, j'ai fait :
    ghc hello.hs

    Ce qui m'a généré 3 fichiers :

    • hello (2 293 936 octets)
    • hello.hi (858 octets)
    • hello.o (3576 octets)

    La commande file dit que que hello.o est :
    hello.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped, with debug_info

    Pour hello.hi :
    hello.hi: data

    Et pour l'exécutable hello lui-même :
    hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, not stripped, with debug_info

    L'exécutable me semble énorme. Alors je fais un strip hello mais il fait encore 749 072 octets.

    J'ai passé pas mal de temps sur les tutoriels et autre pages Wikipédia. Ce qui n'a fait que m'embrouiller un peu plus. Alors ma question : est-ce que GHC est un pur compilateur faisant du vrai code natif ou bien une bidouille embarquant un interpréteur ?