簡體   English   中英

Haskell中特定類型的空列表

[英]Empty List of specific type in Haskell

我需要創建一個特定類型的空列表。
我正在創建一個內部列表的堆棧。 要創建空堆棧,我需要傳遞空列表。 但是如何傳遞特定類型的空列表。

data Stack' a = Stack' [a] deriving (Show)
main = print("MyName", " ", Stack' Int [])

我嘗試了[]::Int和帶有括號的各種其他組合,而不是Int [] 但是沒有成功。 目前我已經與

ls :: [Int]
ls = []
Stack' ls

指定顯式類型

您可以在雙冒號( :: :)之后設置類型,例如:

main = print ("MyName", " ", Stack' [] :: Stack' Int)

這里我們所設定的是,3元組的第三個參數的類型與類型的對象Stack' Int

或者在這里您也可以在列表級別設置類型(但是這些是等效的):

main = print ("MyName", " ", Stack' ([] :: [Int]))

或更規范:

main = print ("MyName", " ", Stack' ([] :: [] Int))

因此,這里我們指定“ 類型為[Int]的空列表 ”。

請注意,這將打印帶有三元組括號和逗號的值:

Prelude> print ("MyName", " ", Stack' [] :: Stack' Int)
("MyName"," ",Stack' []) 

如果要打印時不帶有“三元組噪音”,則應構造一個字符串,例如,使用show :: Show a => a -> String

main = putStrLn ("MyName " ++ show (Stack' [] :: Stack' Int))

然后產生:

Prelude> putStrLn ("MyName " ++ show (Stack' [] :: Stack' Int))
MyName Stack' []

打字申請

我們還可以利用GHC擴展TypeApplication

在這種情況下,我們需要使用-XTypeApplication標志進行編譯,或者在文件的開頭寫入{-# LANGUAGE TypeApplication #-}

然后,我們可以使用@Type表示法指定type參數a的類型,例如:

main = print ("MyName", " ", Stack' @Int [])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM