Проблема в том, что min
принимает два аргумента (и возвращает минимум двух), но вы указали только один; вам нужна minimum
, версия, которая работает со списками.
В частности, эта ошибка возникает из-за того, что GHCi пытается распечатать результат вычисленных вами выражений, но в этом случае вы применили min
к одному аргументу, создав другую функцию. 1 GHCi покорно пытается распечатать это, но терпит неудачу, потому что функции не являются экземпляром Show
, стандартного класса типов для вещей, которые могут быть представлены как строки для отображения.
1 В Haskell все функции принимают один аргумент, а функции с несколькими аргументами создаются из функций, возвращающих другие функции; например, функция, добавляющая два целых числа, может иметь тип Integer -> Integer -> Integer
, то есть Integer -> (Integer -> Integer)
- функция, принимающая целое число и возвращающая другую функцию, которая сама принимает целое число и возвращает целое число. К счастью, вам не нужно слишком часто думать об этом в таких явных выражениях, иначе это очень запутанно!