Я новичок в Haskell, и я пытаюсь создать простой сайт с библиотекой Reflex.Dom, а каскадные таблицы стилей (CSS) представлены как объект Map Text Text
, это приятно, но Haskell проводит различие между тремя, идентичные объекты:Как создать текстовый объект Map Text?
String
Text
[Char]
Конечно, в Python или JavaScript они являются одни и те же или почти одинаковые и функции могут быть взаимозаменяемы между одним объектом и другим. Не в Хаскелле.
"style" =: pack("color:red")
как о
"style" =: pack("color:red; font-family: Helvetica;")
Если добавить еще один элемент стиля, я получаю сообщение об ошибке:
square-01.hs:6:47:
Couldn't match type ‘Text’ with ‘[Char]’
Expected type: String
Actual type: Text
In the second argument of ‘(=:)’, namely ‘pack ("color:red")’
In the second argument of ‘elAttr’, namely
‘("style" =: pack ("color:red"))’
Вот немного от прелюдии, но я не получить Это.
Prelude Reflex.Dom Data.Text Data.Map> "a" =: pack("b")
fromList [("a","b")]
Prelude Reflex.Dom Data.Text Data.Map> :t "a" =: pack("b")
"a" =: pack("b") :: Map [Char] Text
Prelude Reflex.Dom Data.Text Data.Map> "a" =: "b"
fromList [("a","b")]
Prelude Reflex.Dom Data.Text Data.Map> :t "a" =: "b"
"a" =: "b" :: Map [Char] [Char]
Prelude Reflex.Dom Data.Text Data.Map> :t (=:)
(=:) :: k -> a -> Map k a
Добавьте '{- # LANGUAGE OverloadedStrings # -}' в начало файла и наблюдайте за этими ошибками. – Alec
В более общем смысле, '[Char]' и 'String' идентичны, но' Text' отличается. – Alec
@Alec это уже есть –