2011-02-02 9 views
8

Jaką funkcję lub serię funkcji może przekonwertować Int32 na Int w Haskell? Wiem, że HashTable.hashString można przekonwertować na Int32, ale potrzebuję funkcji, która może przekonwertować w inny sposób.Int32 do Int w Haskell

Odpowiedz

12
ghci> import Data.Int 
ghci> fromIntegral (5 :: Int32) :: Int 
5 
ghci> fromIntegral (5 :: Int) :: Int32 
5 
+2

Witamy w polimorficznych typach zwrotu! Były bardzo tajemnicze, kiedy po raz pierwszy spotkałem się z haskellem. – Daniel

2

fromIntegral zamieni z Int32 na Int lub odwrotnie.

6

Przystanek. Hoogle time! ... Niestety, Hoogle tym razem nie odpowiada na pytanie. Przeskakiwanie do odpowiedzi ...

fromIntegral :: (Integral a, Num b) => a -> b

(docs at hackage.haskell.org)

Uwaga podpis rodzaj fromIntegral wskazuje, że okaże żadnego Integral do dowolnego Num. Ponieważ Int32 ma zadeklarowaną instancję Integral, a Int ma zadeklarowaną instancję Num, funkcja wykona zadanie.