Jos esimerkiksi hie pohjainen haskell lisäosa ei toimi suoraan esimerkiksi vscodessa, niin tätä voi silloin kokeilla. Ainakin interoa asentaessa saa virheilmoituksia näkyviin. Kun haskero alkaa toimia, niin todennäköisesti haskell lisäosakin toimii jos siihen vaihtaa.

Näiden haskell ide ympäristöjen asentamisessa stackin kanssa näyttää olevan jonkin verran epämääräisiä bugeja, joiden ohi jos pääsee niin asiat alkaa toimia paremmin. Voit yrittää kysyä minulta apua. Vastaan todennäköisesti hyvin mielelläni.

Käyttikseni on Ubuntu. Windowsista en osaa sanoa miten hyvin toimii.
Intero (VS Codessa Haskero) ei ole enää kehityksessä, joten joudut käyttämääna vanhempaa ghc:ta. Hyvin mahdollisesti ei haittaa Funktio-ohjelmointi 1 -kurssin aikana. Jos ongelmia tulee, niin se näkyy siten, että sopimattomuuden aiheuttavaa pakettia ei löydy suoraan. Todennäköisesti stack osaa antaa tästä kuvaavia virheilmoituksia. Korjattua tämän saa vaihtamalla takaisin uudempaan ghc:hen. Tällöin Intero lakkaa toimimasta. Varmaan paras asia, mitä Intero antaa, on reaaliaikaiset virheilmoitukset, jotka editori värjää suoraan koodiin. Tulevaisuudessa voisin yrittää siirtyä johonkin lsp-pohjaiseen systeemiin, mutta toistaiseksi ovat vielä kehityksen alla.

Asenna Haskellin tool stack ”stackin” kotisivuilta. Älä asenna ainakaan apt-get:sta, rikki! Tai jos asennat niin seuraa stackin sivuilta jostakin löytyviä asennus-ohjeita.

asenna ghc aptista.  (sudo apt install ghc) Tässä vaikuttaa tulevan mukana joitakin paketteja joista intero jossakin kohtaa riippuu, jotka eivät itsekseen asennu.

Tiedoksesi: Tarvitset vanhemman stackin lts-paketin <14.27 stackin conffeihin. (kerrotaan kohta miten)
(lts-14.27 jossa mukana ghc 8.6.5 ==> näkyy täällä: https://www.stackage.org/)
(ghc versio vaatimus interolle näkyy esimerkiksi täällä: https://hackage.haskell.org/package/intero)

Stack toimii sillä tavalla että on globaali projekti (~/.stack/global-project/stack.yaml).
Ja lokaali projekti sitten, kun teet stakilla sen jonnekkin. (projektinimi/stack.yaml)

Locaalin projektin voit luoda esimerkiksi näin: stack new projektinimi simple --resolver lts-14.27

stack.yaml tiedostossa rivi ”resolver” pitää olla interolle sopiva esim: resolver: lts-14.27
Muutoksen jälkeen aja: stack install
Voit nyt myös kokeilla osaako stack: stack install intero
Jos asiat on hyvin niin ei pitäisi tulla virheitä.
En ole ihan varma katsooko vscode lokaalista vai globaalista kontekstista, mutta ainakin toisessa pitää olla resolver: lts-14.27
(voit pistää molempiin)

Pidä huoli viimeistään tässä kohtaa että .local/bin on pathissa (myös seuraavassa bootissa) (echo $PATH).

Minulla oli sekä globaali ja lokaali projekti tässä kohtaa lts-14.27:ssa ja olin ajanut kummassakin contekstissa stack install intero ihan kokeen vuoksi, en ole varma tarvitseeko tuota tehdä manuaalisesti, mutta ainakin näkee että se onnistuu.

käynnistin tässä kohtaa koneen uudelleen.

Avaa vscodessa vaikka juuri tekemäsi projektin hello world tiedosto (projektinimi/src/Main.hs)
kirjoita loppuun jotain diipadaapaa.
Huomaa kuinka mitään ei tapahdu.
Asenna vscodeen haskero extensioni (Pitäisi olla kohtuu helppoa. klikkailet vaan.)
Diipadaapan pitäisi nyt olla alleviivattu punaisella ainakin jostakin kohtaa ja kun viet hiiren päälle niin virhe pitäisi näkyä.

Jos ei toimi niin todennäköisesti sinulle aukeaa ikkuna joka kertoo sinulle, mistä it-alan ammattilaisen päivä koostuu.
Yritä ymmärtää mikä on viestin sisältö ja miksi juuri sinä saat sen.

Yleisesti stack riippuvuuksista:

Yleensä stack-projekteissa riippuvuuksien paketit pitää aina lisätä ensisijaisesti tiedostoon package.yaml tai ”simple”-projekteissa, jollainen sinulla varmaan käytössä, tiedostoon projektinimi.cabal. Sen jälkeen niistä voi importata asioita. Nämä riippuvuudet sitten haetaan tuosta stackin lts-paketista. Joskus voi tulla myös ulkosia riippuvuuksia, jotka menee samaan tiedostoon kuin tuo resolver, mutta ne ovat asia erikseen.

Riippuvan paketin nimi löytyy yleensä ainakin hooglessa scrollattavan sivun aivan vasemmasta yläkulmast, kun katsot dokumentaatiota.

Esimerkiksi Text:n paketti text löytyy kun kelaat tämän sivun sivun alkuun.

Pitäisi muokata tiedostoon projektinimi.cabal seuraavaa:
build-depends: base >= 4.7 && < 5build-depends: base >= 4.7 && < 5, text

Sitten pitää ajaa stack build.

Sitten voisi importata haskell tiedostossa näin:

import Data.Text

ja sitten voisi käyttää koodissa Text:iä:

textiksiPaketoituStringi = pack "kissa"