GNU/Linux >> Belajar Linux >  >> Linux

Memulai Dengan Bahasa Pemrograman Haskell

Haskell adalah bahasa pemrograman yang canggih, murni fungsional, dan bertujuan umum. Panduan ini membahas cara menginstal Haskell dan cara memulai dengan bahasa pemrograman Haskell di sistem operasi mirip Unix. Haskell dapat diinstal dalam tiga cara; menginstal secara manual, menggunakan tumpukan, dan menggunakan Platform Haskell. Menginstal Haskell menggunakan stack adalah metode yang direkomendasikan secara resmi dan termudah sejauh ini. Dalam panduan ini, kita akan melihat cara menginstal Haskell dan cara memulai bahasa pemrograman Haskell di sistem mirip Unix.

Instal tumpukan alat Haskell

Haskell Tool Stack adalah program lintas platform untuk membangun proyek Haskell. Dengan Haskell Stack, kami mendapatkan lingkungan pengembangan yang komprehensif untuk Haskell. Menggunakan tumpukan alat Haskell, kita dapat dengan mudah menginstal komponen berikut:

  • Tumpukan :Pembuat proyek untuk proyek Haskell multi-paket,
  • GHC :Kompiler dan juru bahasa untuk program Haskell,
  • Haddock :Generator dokumentasi untuk paket Haskell,
  • Dan ribuan paket dapat diinstal sesuai permintaan.

Pertama, mari kita instal tumpukan Haskell menggunakan perintah:

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

Atau,

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

Perintah di atas akan mengunduh versi Stack terbaru dan langsung menginstalnya.

Perintah-perintah ini sama untuk hampir semua distribusi Linux dan FreeBSD. Namun, komunitas Arch mempertahankan versi resmi di [komunitas] gudang. Jadi, jika Anda menjalankan Arch Linux dan/atau sistem berbasis Arch, jalankan saja perintah berikut untuk menginstal versi Stack stabil terbaru.

$ sudo pacman -S stack

Setelah diinstal, jalankan perintah berikut untuk menyetel variabel lingkungan PATH Anda agar menyertakan $HOME/.local/bin :

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

Perbarui perubahan yang dibuat di file ~/.bashrc menggunakan perintah:

$ source ~/.bashrc

Mari kita lihat versi Stack yang diinstal:

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

Untuk memperbarui Stack kapan saja, jalankan saja:

$ stack upgrade

Untuk memperbarui indeks paket, jalankan:

$ stack update

Kami telah menginstal Stack. Mari kita lanjutkan dan buat proyek baru.

Menyiapkan proyek baru

Untuk menjalankan proyek baru kita, kita memerlukan beberapa file seperti beberapa kode sumber haskell, sebuah package.yaml, sebuah file stack.yaml dan .cabal dan beberapa direktori lainnya. Kita dapat membuat file-file ini secara manual. Namun, Haskell memiliki banyak templat yang telah ditentukan sebelumnya. Jadi, kita bisa menggunakannya daripada membuatnya secara manual.

Untuk membuat daftar semua template yang tersedia, jalankan:

$ stack templates

Sekarang, saya akan membuat proyek baru bernama "ostechnix" dan gunakan "templat baru" . Untuk melakukannya, jalankan:

$ stack new ostechnix new-template

Contoh keluarannya adalah:

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.

Memasang GHC

Buka direktori proyek yang baru dibuat dan jalankan unduhan 'stack setup' dan instal kompiler yang diperlukan.

$ cd ostechnix/
$ stack setup

Perintah ini akan menginstal kompiler GHC yang benar ke proyek Haskell baru Anda. GHC akan dipasang di lokasi yang terisolasi. Artinya, ini tidak akan mengganggu penginstalan tingkat sistem apa pun.

Harap dicatat bahwa GHC akan diinstal pada direktori root tumpukan global Anda. Jadi, Anda tidak bisa hanya memanggilnya dari shell Anda menggunakan perintah ghc . Sebagai gantinya, pertimbangkan untuk menggunakan:stack ghc , tumpukan ghci , tumpukan runghc , atau stack exec . Untuk informasi lebih lanjut tentang jalur, jalankan:

$ stack path

dan..

$ stack exec env

Kami sekarang telah membuat proyek baru dan menginstal kompiler yang benar untuk proyek kami. Saatnya untuk membangunnya.

Proyek pembangunan

Untuk membangun proyek, jalankan:

$ stack build

Pastikan Anda menjalankan perintah ini di dalam direktori proyek Anda. Setelah build selesai, jalankan executable menggunakan perintah:

$ stack exec ostechnix-exe

Contoh keluarannya adalah:

someFunc

Harap perhatikan bahwa "ostechnix-exe" yang dapat dieksekusi akan disembunyikan di ./.stack-work direktori di direktori utama proyek Anda.

Bermain dengan Haskell

Buka kompiler ghci:

$ stack exec ghci

Atau,

$ stack exec -- ghci

Anda akan diarahkan ke perintah ghci.

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

Seperti orang lain, mari kita mulai dengan "halo dunia!".

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

Mari kita coba beberapa operasi aritmatika.

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

Beberapa operasi kompleks:

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

Mari kita cari tahu angka mana yang lebih besar atau lebih kecil:

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

Temukan penerusnya:

Prelude> succ 89
90

Temukan input yang diberikan sama atau tidak:

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

Juga mudah untuk menggunakan nilai Boolean seperti di bawah ini:

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

Secara default, nama prompt adalah Prelude> . Anda dapat mengubah ini ke sesuatu yang lain, misalnya ghci>, dengan mengetik:

:set prompt "ghci> "

Untuk bantuan, ketik:

:?

Untuk keluar, ketik:

:quit

Atau,

:q

Harap dicatat bahwa kita tidak perlu membuat direktori proyek. Kita dapat mulai bekerja dengan Stack hanya dengan menjalankan 'stack ghci' dari shell. Ini akan mengunduh versi GHC yang benar dan memasukkan Anda ke dalam prelude> cepat.

Mengkompilasi dan menjalankan kode Haskell

Sangat mudah untuk menjalankan kode Haskell. Periksa contoh berikut.

Buat file bernama "ostechnix.hs" dengan konten berikut.

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

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

Sekarang Anda dapat menjalankan program ini menggunakan perintah:

$ stack ostechnix.hs 
Welcome To OSTechNix

Ini contoh lain.

Buat program haskell bernama myhaskell.hs dengan kode berikut:

module Main where

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

Kemudian kompilasi menggunakan perintah:

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

Contoh keluarannya adalah:

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

Terakhir, jalankan seperti gambar di bawah ini:

$ ./test.hs 
Welcome To OSTechNix!

Kami hanya membahas dasar-dasarnya. Ada banyak lagi yang harus dipelajari! Jika Anda tertarik untuk mempelajari lebih lanjut tentang pemrograman Haskell, lihat referensi berikut untuk mempelajari Haskell dari tingkat dasar hingga lanjutan.

  • Tutorial Haskell
  • Learnyouhaskell
  • Haskell Dunia Nyata
  • Coba Haskell di browser Anda
  • Wiki resmi Haskell

Linux
  1. Memulai dengan Zsh

  2. Memulai Samba untuk interoperabilitas

  3. Memulai PostgreSQL di Linux

  1. Memulai dengan ls

  2. Memulai SSH di Linux

  3. Cara:Memulai dengan Ansible

  1. Memulai dengan GnuCash

  2. Memulai dengan Etcher.io

  3. Memulai dengan ekspresi reguler