Size: a a a

2020 July 25

N

NikolayP in Haskell
прошу прощения, может ктонибудь сможет мне помочь
источник

N

NikolayP in Haskell
делаю перевод книги и столкнулся с трудностью перевода, вот оригинал текста
источник

N

NikolayP in Haskell
Using functions, rather than loops and assignment statements, to express algorithms changes everything. First of all, an algorithm expressed as a function is composed of other, more basic functions that can be studied separately and reused in other algorithms. For instance, a sorting algorithm may be specified in terms of building a tree of some kind and then flattening it in some way. Functions that build trees can be studied separately from functions that consume trees. Furthermore, the properties of each of these basic functions and their relationship to others can be captured with simple equational properties. As a result, one can talk and reason about the ‘deep’ structure of an algorithm in a way that is not easily possible with imperative code. To be sure, one can reason formally about imperative programs by formulating their specifications in the predicate calculus, and using loop invariants to prove they are correct. But, and this is the nub, one cannot easily reason about the properties of an imperative program directly in terms of the language of its code. Consequently, books on formal program design have a quite different tone from those on algorithm design: they demand fluency in both the predicate calculus and the necessary imperative dictions. In contrast, many texts on algorithm design traditionally present algorithms with a step-by-step commentary, and use informally stated loop invariants to help one understand why the algorithm is correct
источник

N

NikolayP in Haskell
а вот что получилось
источник

N

NikolayP in Haskell
Переход к использованию функций вместо циклов и присваиваний изменяет все. Во первых алгоритмы записываются как функции, которые могут состоять из других функций. Каждая часть пишется отдельно и может быть использована в других алгоритмах. Алгоритм сортировки может быть выражен как построение дерева с последующим схлопыванием. Построение дерева может быть выучено отдельно от функции схлопывающей дерево. Тоесть значение каждой базовой функции и отношения их между собой могут быть описаны простыми операциями отношений между ними. Это открывает возможность описывать структуру алгоритма способом который не возможен в императивном коде. (в императивном коде нельзя описать алгоритм так же просто как в функциональном языке). Конечно можно сформулировать императивные программы в виде предикатов и использовать инварианты циклов для доказательства их корректности. Но в этом случае нельзя сразу увидеть свойства императивной программы просто смотря на ее код. В Haskell свойства алгоритма видны сразу без дополнительного преобразование в вид предикатов и в этом суть. Отсюда следует требование для книг по дизайну алгоритмов (formal program design — формальный дизайн программ? Может опечатка в оригинале?): они требуют беглого понимания исчисления предикатов и особенностей императивного программирования (ограничений навязываемых императивным программированием). В противоположность многие книги по дизайну алгоритмов традиционно представляют алгоритмы в пошаговом стиле и используют описания циклов прохода по алгоритму для того чтобы показать что он работает корректно.
источник

N

NikolayP in Haskell
какаята каша в конце параграфа получилась, не по русски звучит вообще
источник

YP

Yuriy Pitomets in Haskell
наткнулся впервые на проблему с overloaded labels.

Четыре часа в упор не видел что #sesssion это не #session и не понимал, почему поле не видит))))
источник

YP

Yuriy Pitomets in Haskell
а если еще и кириллицей по ошибке написать, то можно долго думать...
источник

N

NikolayP in Haskell
наверное ИДЕ нужен который умеет подчеркивать?
источник

A

Aminion in Haskell
Как бы реализовать Unbox для ByteString?
источник

AA

A64m AL256m qn<co... in Haskell
никак
источник

AA

A64m AL256m qn<co... in Haskell
ну, для каких-то специфических сценариев только можно
источник

A

Aminion in Haskell
Для байтстрок фиксированной длинны
источник

AA

A64m AL256m qn<co... in Haskell
это просто если не жалко времени на копирование массивов
источник

AA

A64m AL256m qn<co... in Haskell
т.е. изменение элемента в таком анбоксед векторе строк - копирование массива в большой массив с такого-то индекса вот по такой
источник

AF

Alexey Fedotov in Haskell
...Но, и в этом вся суть, нельзя легко судить о свойствах императивной программы исключительно в терминах языка, на котором она написана. Вследствие этого, у книг, посвященных формальному программированию, тон заметно отличается от такового у книг про разработку алгоритмов: они требуют свободного владения как исчислением предикатов, так и определённого понимания императивного стиля. Напротив, многие тексты о разработке алгоритмов традиционно представляют алгоритмы в виде последовательного комментария происходящего шаг за шагом и используют не определённые формально цикловые инварианты, чтобы помочь разобраться, почему алгоритм является корректным.
источник

N

NikolayP in Haskell
Alexey Fedotov
...Но, и в этом вся суть, нельзя легко судить о свойствах императивной программы исключительно в терминах языка, на котором она написана. Вследствие этого, у книг, посвященных формальному программированию, тон заметно отличается от такового у книг про разработку алгоритмов: они требуют свободного владения как исчислением предикатов, так и определённого понимания императивного стиля. Напротив, многие тексты о разработке алгоритмов традиционно представляют алгоритмы в виде последовательного комментария происходящего шаг за шагом и используют не определённые формально цикловые инварианты, чтобы помочь разобраться, почему алгоритм является корректным.
спасибо👍
источник

N

NikolayP in Haskell
Alexey Fedotov
...Но, и в этом вся суть, нельзя легко судить о свойствах императивной программы исключительно в терминах языка, на котором она написана. Вследствие этого, у книг, посвященных формальному программированию, тон заметно отличается от такового у книг про разработку алгоритмов: они требуют свободного владения как исчислением предикатов, так и определённого понимания императивного стиля. Напротив, многие тексты о разработке алгоритмов традиционно представляют алгоритмы в виде последовательного комментария происходящего шаг за шагом и используют не определённые формально цикловые инварианты, чтобы помочь разобраться, почему алгоритм является корректным.
я как ты не могу сразу переводить, у меня какойто слишком прямой перевод получается. как научится так перводить?
источник

N

NikolayP in Haskell
раз 10 прочитаю и перепишу и потом только получается
источник

N

NikolayP in Haskell
и когда постоянно англ читаешь мозг перестраивается не по русски на русском писать начинаю
источник