Re[19]: Язык ДРАКОН — новая идея в программировании
От: Sinclair Россия https://github.com/evilguest/
Дата: 21.07.22 03:58
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Откровенно говоря тоже говнокод. Я бы это написал как-то так:

VD>
VD>Compare(xs : string, ys : string) : int
VD>{
VD>   | (x : tailX,  y : tailY) when x != y => x - y                 // строка состоит из символов префиксов и продолжения и префиксы не равны
VD>   | (x : tailX,  y : tailY) when x == y => Compare(tailX, tailY) // тоже самое но префиксы равны, продолжаем рекурсивно...
VD>   | ([],  _ : _) => 1  // xs содержит пустой список, а ys - нет.
VD>   | (_ : _, [])  => -1 // наоборот
VD>   | ([], [])     => 0  // все символы равны и списки пусты
VD>}
VD>


VD>Вот это как-то ближе к идеалу. Сводим все к рекурсии и абстракции списка. А твой императивный говнокод читается не лучше дракона, хотя он и пушистее. Вопрос ведь не в занимаемой площади на экране, а в том насколько просто код понять.

А вот так нельзя? Или можно, но читается хуже?

Compare(xs : string, ys : string) : int
{
   | (x : tailA,  x : tailB) => Compare(tailA, tailB) // префиксы равны, продолжаем рекурсивно...
   | (x : tailX,  y : tailY) => x - y                 // префиксы не равны
   | ([],  _ : _) => 1  // xs содержит пустой список, а ys - нет.
   | (_ : _, [])  => -1 // наоборот
   | ([], [])     => 0  // все символы равны и списки пусты
}
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.