Ratkaistu: int kellumaan

Viimeisin päivitys: 09/11/2023

Muuntamisen ymmärtäminen tietotyypistä toiseen on jokaisen ohjelmointikielen perustavanlaatuinen osa. Haskellissa, staattisesti kirjoitetussa, toiminnallisessa ohjelmointikielessä, tietotyyppien muunnokset eivät ole poikkeus, etenkään käytettäessä numeerisia tyyppejä, kuten esim. kokonaisluku (Int) ja liukuluku (Float). Tässä artikkelissa käsitellään muunnosprosessia Int:stä ​​Floatiksi Haskellissa, valaistaen mukana olevia toimintoja, tietokoneen toimintaa ja yksityiskohtaisia ​​vaiheittaisia ​​selityksiä.

Muunnos Int:stä ​​Floatiksi Haskellissa

Haskellissa tyyppimuunnos ei voi tapahtua implisiittisesti. Tämä kuvastaa Haskellin vahvasti tyypitettyä luonnetta, jossa muuttujat eivät ole keskenään muunnettavissa, elleivät ohjelmoijat ole määrittäneet niitä. 'fromIntegral'-funktio on Haskellin lähestymistapa konversioiden hallintaan Integral-tyyppien, kuten Int, ja ei-Integraal-tyyppien, kuten Float, välillä. Se poistaa mahdollisen tietojen menetyksen muuntamalla kokonaisluvut kelluiksi, koska kelluvilla on suurempi alue.

convertIntToFloat :: Int -> Float
convertIntToFloat intValue = fromIntegral intValue 

Tämä yksinkertainen koodinpätkä määrittää funktion "convertIntToFloat". joka muuntaa kokonaisluvut kelluiksi käyttämällä "fromIntegral"-komentoa. On syytä huomata, että 'fromIntegral' ottaa Integral-tyypin arvon ja palauttaa yleisen Num-tyypin, johon Float kuuluu.

Mukana olevien toimintojen ymmärtäminen

  • Integralista: Tämä funktio on Haskellin sisäänrakennettu funktio, joka kuuluu luokkaan Num. Se muuntaa numeeriset tyypit, erityisesti integraalityypit, kuten Int, yleisiksi numerotyypeiksi, kuten Float.
  • (::) Tyyppimerkintä: Sitä käytetään Haskellin lausekkeiden tyypin määrittämiseen. Tämä on erityisen tärkeää funktiossamme, jossa meidän on todettava, että "convertIntToFloat" ottaa Int:n ja palauttaa Floatin.

Nyt kun olemme tarkastelleet toteutusta tarkasti ja käyneet läpi mukana olevat kokonaisuudet, ymmärretään tämä todellisella esimerkillä.

Vaiheittainen koodin selitys

Oletetaan, että meillä on kokonaisluku 25 ja haluamme muuntaa sen floatiksi, käyttäisimme yksinkertaisesti "convertIntToFloat" -funktiota seuraavasti:

main = print (convertIntToFloat 25)

Tämä tulostaa: 25.0

Näin Haskell käsittelee tämän muunnoksen sisäisesti:

1. Vaihe 1: Kokonaisluku 25 välitetään `convertIntToFloat`-funktiolle.
2. Vaihe 2: 'fromIntegral' ottaa 25 syötteenä, joka on 'Int' (Integral-tyyppi).
3. Vaihe 3: "fromIntegral" palauttaa "Num"-tyypin. Koska Float on osa "Num"-luokkaa ja sitä odotetaan funktiolta (kuten ::-tyyppinen huomautus tarkoittaa), Haskell kääntää tämän kelluksi.
4. Vaihe 4: Kelluva versio 25 (25.0) palautetaan ja tulostetaan.

Tutustu muihin kirjastoihin ja toimintoihin

Haskellin vahvasti kirjoitettu luonne ja laaja kirjastotuki tarjoavat enemmän tapoja käsitellä ja muuntaa tyyppejä. "fromIntegralin" lisäksi Haskellissa on "toInteger", "realToFrac" ja paljon muuta tyyppimuunnoksen avuksi. Lisäksi Haskell-alusta ja kirjastot, kuten "base", tarjoavat lukuisia numerotyyppeihin ja muunnoksiin liittyviä moduuleja, joihin kannattaa tutustua jokaisen Haskell-ohjelmoijan kohdalla.

Sukellus syvälle Haskell-kirjastot ja tyyppijärjestelmän ymmärtäminen luo vahvan perustan kestävien, virheettömien ohjelmien luomiselle, jotka käsittelevät monimutkaisia ​​tietoja. Näin ollen se tarjoaa loputtomasti mahdollisuuksia laajentaa Haskell-ohjelmoijan työkalupakkia.

Related viestiä: