Две вещи, которые я не могу понять:
1) Без {-# LANGUAGE OverloadedStrings #-}
ни один типичный код, где чистые строки передаются в качестве аргументов для атрибутов, не работает; Однако все хорошо, пока эта инструкция есть. Что он делает в данном конкретном случае и насколько безопасно его использовать в рабочем коде?
2) Следующий фрагмент кода: (toHtml $ "<script ... ></script>")
терпит неудачу с чем-то, чего я не совсем понимаю:
Неопределенная переменная типа "a0", возникающая из литерала ...
предотвращает решение ограничения (Data.String.IsString a0).
Возможное исправление: используйте аннотацию типа, чтобы указать, каким должен быть «a0».
Эти потенциальные случаи существуют:
экземпляр Data.String.IsString H.AttributeValue - определен в «blaze-markup-0.8.2.1: Text.Blaze.Internal»
экземпляр Data.String.IsString H.Tag - определен в «blaze-markup-0.8.2.1: Text.Blaze.Internal»
экземпляр ~ Char => Data.String.IsString [a] - определен в ‘Data.String’
... плюс 10 экземпляров, включающих типы вне области действия