2014-04-07 14 views
5

Đang cố gắng để tìm hiểu một số Haskell và cố này:Haskell - đơn v dấu ngoặc kép

ghci> :t 'a' 
'a' :: Char 
ghci> :t "a" 
"a" :: [Char] 

Tại sao nó nhìn thấy dấu nháy đơn và đôi khác nhau và điều này quan trọng?

Trả lời

13

Đây là giống như C/C++/C#/Java và các ngôn ngữ lập trình khác. Dấu nháy đơn có nghĩa là ký tự đơn, dấu ngoặc kép có nghĩa là mảng ký tự (chuỗi).

Trong Haskell, 'c' là một ký tự đơn (Char) và "c" là danh sách các ký tự ([Char]).

Bạn có thể so sánh này để nguyên và danh sách các số nguyên:

ghci> let a = 1 
ghci> let b = [1,2,3] 
ghci> :t a 
a :: Integer 
ghci> :t b 
b :: [Integer] 

Điều quan trọng là bởi vì phải có một sự phân biệt giữa các yếu tố duy nhất và một danh sách các yếu tố này. Bạn có thể thực hiện các thao tác khác nhau trên các phần tử đơn giản và các hoạt động khác nhau trên danh sách.

+2

Có lẽ một cái gì đó quan trọng cần lưu ý sẽ là ': info chuỗi' in ra 'kiểu String = [Char]', vì vậy bạn có thể thấy một cách rõ ràng như thế nào 'chuỗi' loại được xác định. – bheklilr

0

Họ đang giải thích khác nhau vì họ chỉ là (đó chỉ là cách ngôn ngữ được định nghĩa). Điều này quan trọng vì một số Char[Char] không giống nhau. Khác hơn là tôi không chắc chắn những gì bạn đang cố gắng để hỏi ở đây.

Các vấn đề liên quan