А типизация в Хаскеле очень строгая

Jul 13, 2020 22:43

Как в Аде, практически. Даже константы автоматически не приводятся к типу, который объявлен для поля в записи. Это касается объектов-классов типов для разбора командной строки из библиотеки cmdargs. Например, FilePath это просто алиас String. Но, поскольку он объявлен как отдельный тип в виде data FilePath=String, то это уже другой тип и его явно ( Read more... )

программаж

Leave a comment

Comments 2

thedeemon July 14 2020, 10:24:01 UTC
У вас там небось расширение OverloadedStrings включено, оно делает строковые константы неоднозначными по типу. С числами даже расширений не нужно, 42 может быть чем угодно из класса типов Num, будь то Int, Integer, Double или др. Если принимающая функция достаточно конкретно ожидаемый тип описала, то явного указания не нужно обычно. Если же там тоже все обобщенно, лишь на уровне класса типов, тогда компилятор может попросить конкретности.

А Char он не только про ascii, он тоже юникод. Разница между [Char] и Text в способе хранения - ленивый связный список против чего-то получше.

Reply

moonwalker72 July 14 2020, 13:06:42 UTC
Эта функция - одна из генерирующих аннотации для данного параметра командной строки, а поскольку аннотации выводятся из параметризующего типа, который создается в инстансе класса типов, то вроде как бы должна сама понимать. Но вот чего-то не понимает, так и пишет. А насчет OverloadedStrings - правда, но это не я написал - я просто играюсь с кодом, дополнил приложение командной строкой.

Reply


Leave a comment

Up