Обновить
59

Пользователь

22
Подписчики
Отправить сообщение
Я весь ваш комментарий могу цифрой назвать, это уже софистика.
2256 в 257ричной системе счисления, это какие цифры? 22 и 56, или 2 и 256? Вот будет отдельная закорючка, или условятся люди писать с пробелом: 2 256 или 22 56, тогда да. А так ведь 256 и горшком можно назвать, вдруг в каком-то языке именно так его и пишут.
Программистом станешь!
Системы счисления — это святое!
Тогда почему 256 может быть цифрой в системах счисления с основанием больше 256, а 15 — это таки число 21?
Нет. Цифра — это знак. В 256 три знака. В системах счисления с основанием больше 256 число 256 можно записать одним знаком, например мы можем условиться, что таким таким — η. Но запись 256 не станет от этого одной цифрой.
Если это десятичное представление, то это число 15 в десятичной системе, а не цифра. То, что в шестнадцатеричной его можно записать с помощью одной цифры, уже не так важно.
Наркотики, как и алкоголь с табаком, от программ отличаются наличием зависимости, поэтому на них вводят запреты и ограничения, а ваша аналогия в корне не корректна.
Во-первых, автор скорее всего имел в виду, что на перле процент таких больше, а во-вторых, это не частный случай, на основании которого делают вывод, а пример.
Да, только f разные.
Перед => указываются constraints, в данном примере принадлежность типа a к классу Ord, а после — сам тип.
a -> b — тип функции, принимающий a, и возвращающий b. Стоит просто помнить, что -> — левоассоциативен, и запись a -> b -> c означает ровно то же, что и a -> (b -> c). Т.е. функция принимает a, а возвращает другую функцию с типом b -> c.
Это действительно так, вы можете написать max 10, и это будет функция из числа в число.
mymax :: (Num a) => a -> a
-- здесь уже нужен Num, потому что в определении мы используем литерал 10, а он имеет тип (Num a) => a
mymax = max 10

test = mymax 0 -- 10
test2 = mymax 20 -- 20


Что означает запись «max :: (Ord a) => a -> (a -> a)»?

Это декларация функции, которую можно вбить в исходном коде:
max :: (Ord a) => a -> (a -> a)
-- полностью эквивалентно max :: Ord a => a -> a -> a
Их, оказывается, ругают? На мой взгляд, там сделано очень грамотно и разумно, а принятые решения направлены на удобство пользователя, в MSDN всё доступно расписано.
Вот тебе и пол третьего, прочёл всю статью, а упомянутого примера не заметил.
Самое прекрасное использование ContT, на мой взгляд, это
file :: FilePath -> IOMode -> ContT r IO Handle
file f mode = ContT $ withFile f mode -- withFile закроет файл в случае исключения

test :: [FilePath] -> ContT r IO [String]
test fs = do
    -- никаких вложенных конструкций
    hs <- mapM (\f -> file f ReadMode) fs
    -- используем handles
    ss <- liftIO $ mapM hGetContents hs
    return ss
Мне привычнее смотреть на конвертеры с т.з. теории категорий.
необходим id-конвертер без преобразований, и конвертер, соединяющий два других.
ComposeConverter c = new ComposeConverter(new BtoC(), new AtoB());

В точности, как операция композиции функций в фп языках.
Ну мы всё-таки о вполне понятном и очевидном sorted, написать который можно разными путями, но это никак не просто true. И, на всякий случай, такой вариант тоже исключается
sorted cmp xs = xs == sort cmp xs

по понятным причинам.
Да ничего страшного не будет. Те, кто не впадает в зависимость от получения мнимых достижений, получат преимущество. Такое разделение и сейчас есть, далеко не всем интересно наяривать какие-то достижения в игрушках.
Ух ты, статья по Agda, спасибо большое!

Интересно бы попробовать доказать аналогичное на обычной сортировке. Т.е. для функций
sort : ∀ {l} {a : Set l} → (a → a → bool) → list a → list a
sorted : ∀ {l} {a : Set l} → (a → a → bool) → list a → bool

доказать утверждение
sort-sorts : ∀ {l} {a : Set l} {cmp : a → a → bool} {xs : list a} → sorted (sort xs) ≡ true
Так ведь и не должно компилироваться.
С --no-termination-check это уже читерство :)

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность