2011-02-02 37 views
8

Chức năng, hoặc chuỗi chức năng nào, có thể chuyển đổi Int32 thành Int trong Haskell? Tôi biết rằng HashTable.hashString có thể chuyển đổi thành Int32, nhưng tôi cần một hàm có thể chuyển đổi theo cách khác.Int32 to Int trong Haskell

Trả lời

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

Chào mừng bạn đến với các loại trả về đa hình! Đây là những điều rất bí ẩn khi tôi gặp Haskell lần đầu tiên. – Daniel

2

fromIntegral sẽ chuyển đổi từ Int32 sang Int hoặc ngược lại.

6

Dừng. Hoogle time! ... Đáng buồn thay, lần này Hoogle không trả lời được câu hỏi này. Bỏ qua câu trả lời ...

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

(docs at hackage.haskell.org)

Lưu ý các loại chữ ký của fromIntegral chỉ ra rằng nó sẽ biến bất kỳ Integral vào bất kỳ Num. Kể từ Int32 có một trường hợp được khai báo là IntegralInt có một trường hợp được khai báo là Num, chức năng fromIntegral sẽ thực hiện công việc.