GNU/Linux >> Tutoriales Linux >  >> Linux

Primeros pasos con el lenguaje de programación Haskell

Haskell es un lenguaje de programación avanzado, puramente funcional y de propósito general. Esta guía trata sobre cómo instalar Haskell y cómo comenzar con el lenguaje de programación Haskell en sistemas operativos similares a Unix. Haskell se puede instalar de tres formas; instalar manualmente, usar stack y usar Haskell Platform. Instalar Haskell usando stack es el método oficialmente recomendado y más fácil hasta ahora. En esta guía, veremos cómo instalar Haskell y cómo comenzar con el lenguaje de programación Haskell en sistemas similares a Unix.

Instalar la pila de herramientas de Haskell

Haskell Tool Stack es un programa multiplataforma para construir proyectos Haskell. Con Haskell Stack obtenemos un entorno de desarrollo completo para Haskell. Usando la pila de herramientas de Haskell, podemos instalar fácilmente los siguientes componentes:

  • Apilar :un creador de proyectos para proyectos Haskell de varios paquetes,
  • GHC :un compilador e intérprete de programas Haskell,
  • Eglefino :Un generador de documentación para paquetes de Haskell,
  • Y se pueden instalar miles de paquetes bajo demanda.

Primero, instalemos la pila Haskell usando el comando:

$ wget -qO- https://get.haskellstack.org/ | sh

O,

$ curl -sSL https://get.haskellstack.org/ | sh

Los comandos anteriores descargarán la última versión de Stack y la instalarán de inmediato.

Estos comandos son los mismos para casi todas las distribuciones de Linux y FreeBSD. Sin embargo, la comunidad de Arch mantiene una versión oficial en la [comunidad] repositorio. Entonces, si está ejecutando Arch Linux y/o cualquier sistema basado en Arch, simplemente ejecute el siguiente comando para instalar la última versión estable de Stack.

$ sudo pacman -S stack

Una vez instalado, ejecute el siguiente comando para configurar su variable de entorno PATH para incluir $HOME/.local/bin :

$ echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc

Actualiza los cambios realizados en el archivo ~/.bashrc usando el comando:

$ source ~/.bashrc

Veamos la versión instalada de Stack:

$ stack --version
Version 1.6.1, Git revision f25811329bbc40b0c21053a8160c56f923e1201b (5435 commits) x86_64 hpack-0.20.0

Para actualizar Stack en cualquier momento, simplemente ejecute:

$ stack upgrade

Para actualizar el índice del paquete, ejecute:

$ stack upgrade

Hemos instalado Stack. Avancemos y creemos un nuevo proyecto.

Configuración de un nuevo proyecto

Para poner en marcha nuestro nuevo proyecto, necesitamos algunos archivos, como el código fuente de haskell, un archivo package.yaml, un stack.yaml y un archivo .cabal, y algunos otros directorios. Podemos crear estos archivos manualmente. Sin embargo, Haskell tiene muchas plantillas predefinidas. Entonces, podemos usar uno en lugar de crearlos manualmente.

Para enumerar todas las plantillas disponibles, ejecute:

$ stack templates

Ahora, voy a crear un nuevo proyecto llamado "ostechnix" y use "nueva plantilla" . Para hacerlo, ejecute:

$ stack new ostechnix new-template

La salida de muestra sería:

Downloading template "new-template" to create project "ostechnix" in ostechnix/ ...

The following parameters were needed by the template but not provided: author-email, author-name, category, copyright, github-username
You can provide them in /home/sk/.stack/config.yaml, like this:
templates:
 params:
 author-email: value
 author-name: value
 category: value
 copyright: value
 github-username: value
Or you can pass each one as parameters like this:
stack new ostechnix new-template -p "author-email:value" -p "author-name:value" -p "category:value" -p "copyright:value" -p "github-username:value"

Looking for .cabal or package.yaml files to use to init the project.
Using cabal packages:
- ostechnix/

Selecting the best among 12 snapshots...

Downloaded lts-10.0 build plan. 
Populated index cache. 
* Matches lts-10.0

Selected resolver: lts-10.0
Initialising configuration using resolver: lts-10.0
Total number of user packages considered: 1
Writing configuration to file: ostechnix/stack.yaml
All done.

Instalación de GHC

Vaya al directorio del proyecto recién creado y ejecute la descarga 'stack setup' e instale el compilador requerido.

$ cd ostechnix/
$ stack setup

Este comando instalará el compilador GHC correcto en su nuevo proyecto Haskell. GHC se instalará en un lugar aislado. Eso significa que esto no interferirá con ninguna instalación a nivel de sistema.

Tenga en cuenta que GHC se instalará en su directorio raíz de pila global. Por lo tanto, no puede simplemente llamarlo desde su shell usando el comando ghc . En su lugar, considere usar:stack ghc , apilar ghci , apilar runghc o ejecutivo de pila . Para obtener más información sobre las rutas, ejecute:

$ stack path

y..

$ stack exec env

Ahora hemos creado un nuevo proyecto e instalado el compilador correcto para nuestro proyecto. Es hora de construirlo.

Proyecto de construcción

Para compilar el proyecto, ejecute:

$ stack build

Asegúrese de ejecutar este comando dentro del directorio de su proyecto. Una vez completada la compilación, ejecute el ejecutable usando el comando:

$ stack exec ostechnix-exe

La salida de muestra sería:

someFunc

Tenga en cuenta que el ejecutable "ostechnix-exe" estará oculto en ./.stack-work directorio en el directorio principal de su proyecto.

Jugando con Haskell

Abra el compilador ghci:

$ stack exec ghci

O,

$ stack exec -- ghci

Accederás al aviso de ghci.

GHCi, version 8.2.2: http://www.haskell.org/ghc/ :? for help
Prelude>

Como todos los demás, comencemos con "¡Hola mundo!".

Prelude> "hello world!"
"hello world!"

Probemos algunas operaciones aritméticas.

Prelude> 14+90
104
Prelude> 14-90
-76
Prelude> 34/2
17.0

Algunas operaciones complejas:

Prelude> (67*98) - 50 - (24-2)
6494

Averigüemos qué número es mayor o menor:

Prelude> max 34 17
34
Prelude> min 45 98
45

Encuentra el sucesor:

Prelude> succ 89
90

Encuentre que las entradas dadas son iguales o no:

Prelude> 10 == 10
True
Prelude> 10 == 20
False
Prelude> "ostechnix" == "ostechnix"
True
Prelude> "ostechnix" == "windows"
False

También es fácil usar valores booleanos como los siguientes:

Prelude> True && False
False
Prelude> True && True
True
Prelude> False || True
True
Prelude> False && False
False

Por defecto, el nombre del mensaje es Preludio> . Puede cambiar esto a otra cosa, por ejemplo ghci>, escribiendo:

:set prompt "ghci> "

Para obtener ayuda, escriba:

:?

Para salir, escriba:

:quit

O,

:q

Tenga en cuenta que no tenemos que crear un directorio de proyecto. Podemos comenzar a trabajar con Stack simplemente ejecutando 'stack ghci' desde el shell. Descargará la versión correcta de GHC y lo llevará dentro del preludio> aviso.

Compilar y ejecutar código Haskell

Es fácil ejecutar un código Haskell. Compruebe el siguiente ejemplo.

Cree un archivo llamado "ostechnix.hs" con los siguientes contenidos.

#!/usr/bin/env stack
-- stack --install-ghc runghc

main :: IO ()
main = putStrLn "Welcome To OSTechNix"

Ahora puede ejecutar este programa usando el comando:

$ stack ostechnix.hs 
Welcome To OSTechNix

Aquí hay otro ejemplo.

Cree un programa haskell llamado myhaskell.hs con el siguiente código:

module Main where

main :: IO ()
main = putStrLn "Welcome To OSTechNix!"

Luego compílelo usando el comando:

stack exec -- ghc myhaskell.hs -o test.hs

La salida de muestra sería:

[1 of 1] Compiling Main ( myhaskell.hs, myhaskell.o )
Linking ostechnix.hs ...

Finalmente, ejecútelo como se muestra a continuación:

$ ./test.hs 
Welcome To OSTechNix!

Acabamos de cubrir los conceptos básicos. ¡Hay mucho más que aprender! Si está interesado en obtener más información sobre la programación de Haskell, consulte los siguientes recursos para aprender Haskell desde el nivel básico hasta el avanzado.

  • Tutoriales de Haskell
  • Aprendaustedhaskell
  • Haskell del mundo real
  • Pruebe Haskell en su navegador
  • Wiki oficial de Haskell

Linux
  1. Comenzando con Zsh

  2. Comenzando con ls

  3. Primeros pasos con Samba para la interoperabilidad

  4. Primeros pasos con PostgreSQL en Linux

  5. Cómo:Introducción a Ansible

Primeros pasos con GitHub

Primeros pasos con el administrador de paquetes de Nix

Primeros pasos con systemctl

Primeros pasos con cPanel

Primeros pasos con el comando Tar

Cómo:Introducción a la programación - Primeros pasos