Запрос Hoogle возвращает функции, не соответствующие сигнатуре типа

Если я попытаюсь использовать следующую команду Hoogle (v4.2.33) для поиска функций, содержащих тип подпись ByteString->[ByteString] :

hoogle --count 40 "ByteString->[ByteString]"

то к концу вывода я получаю:

Data.ByteString.Char8 transpose :: [ByteString] -> [ByteString]
Data.ByteString.Lazy transpose :: [ByteString] -> [ByteString]
Data.ByteString.Lazy.Char8 transpose :: [ByteString] -> [ByteString]
Codec.Compression.Zlib.Raw compress :: ByteString -> ByteString
Codec.Compression.GZip compress :: ByteString -> ByteString

Почему Hoogle возвращает функции с сигнатурой ByteString -> ByteString и т. д., когда я указываю сигнатуру типа ByteString->[ByteString]?


person artella    schedule 16.06.2014    source источник
comment
Hoogle делает какое-то нечеткое совпадение.   -  person n. 1.8e9-where's-my-share m.    schedule 16.06.2014
comment
Предположительно потому, что эти функции можно использовать для реализации функций нужного вам типа, и если они вам действительно не нужны, вы можете просто их игнорировать.   -  person Alexey Romanov    schedule 16.06.2014


Ответы (1)


Hoogle использует концепцию типа "приблизительно". сопоставление, обобщение типов и удаление конструкторов для поиска близких совпадений.

person Don Stewart    schedule 16.06.2014