[15:26:23] <vgodunko> Кто может придумать название и профиль подпрограммы для получения всех символов строки начиная с некоторого индекса?
[15:27:39] <yeo> Slice?
[15:28:21] <yeo> Tail?
[15:28:37] <vgodunko> Slice уже есть и он возвращает именно что срез
[15:29:02] <vgodunko> даже если его сделать как одно параметрический - не понятно это конец или начало
[15:29:39] <yeo> если сделать в Slice парамер To необъязательным?
[15:30:38] <vgodunko> так вот, непонятки породятся.
[15:30:54] <vgodunko> А было бы приятно иметь пару для получения всех до/всех после
[15:31:16] <vgodunko> Head/Tail в Ada философии это первые/последние N
[15:31:34] <yeo> если использовать именное сопоставление параметров, то не будет непоняток
[15:31:59] <vgodunko> Ты пере-python-ился? ;-)
[15:32:08] <yeo> :(
[15:32:13] <vgodunko> Это же явно не в нашем духе
[15:32:39] <vgodunko> Head_Before/Tail_After то же не очень
[15:33:08] <vgodunko> Сейчас есть Starts_With/Ends_With, может как-то аналогично построить имена
[15:33:47] <yeo> Prefix, suffix
[16:03:58] <nordwind_> with_with
[16:04:04] <nordwind_> $)
[17:51:41] <landgraf> From_To :-D
[18:40:44] <vgodunko> From_To <=> Slice ;-)
[18:40:56] <vgodunko> Slice_Head/Slice_Tail
[19:06:39] <landgraf> vgodunko, ну значит From_To_End :D
[19:07:22] <landgraf> а разве нельзя сделать Obj.Slice(N,Length(Obj)) ?
[19:07:35] <vgodunko> Можно!
[19:07:47] <landgraf> ну или Obj.Length для однообразия
[19:07:49] <vgodunko> Но ведь Obj.Slice_Tail (N) удобнее!
[19:07:54] <yeo> тогда уже Head_Slice, Tail_Slice
[19:09:01] <landgraf> Obj.Head(Obj.Length - N) тоже работает вроде
[19:10:03] <vgodunko> Тут дело в том, что в Ada стандартные операции Head/Tail подразумевают указание количество символов от начала/конца
[19:10:13] <vgodunko> А мне нужно от символа N и до конца
[19:12:52] <yeo> это где такое?
[19:13:05] <vgodunko> Которое?
[19:13:14] <landgraf> vgodunko, так length -N и есть то что надо, нет?
[19:13:25] <landgraf> Head(Length - N)
[19:13:35] <vgodunko> length - n + 1
[19:13:39] <landgraf> vgodunko, это Unbounded умеют
[19:13:43] <landgraf> vgodunko, ну да )
[19:13:46] <vgodunko> А это уже магия мнимой единицы
[19:14:14] <landgraf> vgodunko, вообще я такое не далее как два дня назад говнокодил, было бы удобно, да )
[19:15:10] <vgodunko> Так вот и я нарвался, правда с Universal_String
[19:15:22] <landgraf> Cur := Find_In_Subtree(Cur, Head(Slider, Index(Slider,"/")-1));
[19:15:26] <landgraf> %)
[19:15:46] <vgodunko> Это не правильно! ;-)
[19:15:52] <vgodunko> Нужно Матрёшку использовать.
[19:16:16] <vgodunko> Я обошёл потребность в Slice_Tail с помощью... Split
[19:16:35] <yeo> ну Head/Tail в Ada
[19:16:38] <vgodunko> Т.е. разбиваю через Split ('/') путь на составляющие и беру необходимую.
[21:51:08] <yeo> Ура, заработал deflate!!!
[22:42:31] <vgodunko> Круто!!!
[22:42:47] <yeo> Почти :-/
[22:47:22] <yeo> Щказывается procedure A (X : out Integer); может менять X даже если в ее коде нет присваивания
[22:49:36] <yeo> Но Ада всетаки сила. Код deflate распаковки, написанный 10 лет назад, удалось перекроить в матрешку всего за два дня
[22:54:33] <yeo> 800 строк кода делов, не счетая пустых и комментариев
[23:09:34] <landgraf> что есть deflate?
[23:10:05] <yeo> алгорит сжатия? gzip например
[23:11:06] <yeo> я сделал только распаковку
[23:11:39] <yeo> зато в "потоковом" режиме. Такой изврат в коде получился :)
[23:11:44] <landgraf> угу, прочитал википедию
[23:14:00] <vgodunko> Теперь даёшь сжатие! ;-)
[23:18:28] <yeo> это сложнее :(
[23:20:11] <vgodunko> Как два бита переставить?