Дмитрий
А то не отвечает
Дмитрий
А, ок, это я просто не вижу
Vadim
@Liminiens какую-то молодежь привёл
Нормальных ребят он привёл. Эт просто ты уже стареешь.
Romɑn
Да, нормальные ребята.
Только скалист, странно что ты с ним общался ведь у нас Василий скалолаз
Vladislav
попробуй это) https://mvanier.livejournal.com/2897.html
A combinator is just a lambda expression with no free variables. We saw above what lambda expressions are (they're just anonymous functions), but what's a free variable? It's a variable (i.e. a name or identifier in the language) which isn't a bound variable. Happy now? No? OK, let me explain. Читаю, охуенная статья)
Vladislav
В сишарпе и фшарпе получается слабая типизация из-за возможности кастовать объекты?
Dr. Friedrich
В сишарпе и фшарпе получается слабая типизация из-за возможности кастовать объекты?
Возможность кастовать не относится к системе типов, как мне кажется.
Vladislav
So Scheme, which is dynamically typed, is also strongly typed, while C, which is statically typed, is weakly typed (because you can cast a pointer to one kind of object into a pointer to another type of object without altering the pointer's value).
Vladislav
Там просто так написано
Dr. Friedrich
Там просто так написано
Нууу там вот интересно написано.
Dr. Friedrich
Я бы материал статьи интерпретировал так: если тип не является непосредственным атрибутом значения, а зависит от внешних обстоятельств — то это слабая типизация.
Dr. Friedrich
В CLI тип является атрибутом значения.
Dr. Friedrich
И даже в JS, внезапно.
Dr. Friedrich
Получается, что «слабо типизированы» в основном низкоуровневые языки, которые позволяют прямо реинтерпретировать значения в контексте разных типов.
Dr. Friedrich
Но тут разобраться надо, каков терминологический базис статьи.
Dr. Friedrich
В сишарпе и фшарпе получается слабая типизация из-за возможности кастовать объекты?
TLDR: из-за того, что успешно скастовать ты можешь только в пределах объектной иерархии, я считаю, что сильная типизация не нарушается нашими кастами.
Vladislav
В плюсах и сях этого нет поэтому слабая
Vladislav
Код -> инструкции
Dr. Friedrich
В плюсах много чо есть, нельзя однозначно говорить
Dr. Friedrich
Скорее можно сказать, что в ряде случаев в плюсах сильная типизация нарушается.
Dr. Friedrich
А в ряде случаев может быть сохранена (там, где у тебя есть RTTI — dynamic_cast, например).
Dr. Friedrich
(простите, вместо RTTI написал RAII, исправил)
Nikolay
Как эффективно сгенерировать n-gram? Т.е., например для триграм и символов A,B,C нужно сгенерировать следующий массив: AAA AAB AAC ABA ABB ABC ACA ACB ACC BAA ...
Nikolay
Чёт я наговнякал на питоне, мне памяти не хватает для 160 символов
Nikolay
А там всего 4млн где-то будет 3-грам
Vasily
Radix tree
Nikolay
Не, в другом трабл, у меня алгоритм косячный
Dr. Friedrich
Prefix или suffix tree можна.
Nikolay
Деревья не нужны
Nikolay
Именно просто генерацию сделать нужно эффективно
Nikolay
У меня он чёт гигабайты жрёт памяти
Vasily
Ну хз
Nikolay
Vasily
Хаха
Vasily
Обычная рекурсия
Nikolay
Много лишних операций, а я чёт не пойму как умнее сделать :(
Vasily
Ну есть набор символов
Vasily
Тебе , как я понял, надо находить все перестановки в тройках
Dr. Friedrich
Если ты сразу знаешь, скоко грам тебе надо, то лучше в массиве сразу место зарезервируй
Dr. Friedrich
Алсо в питоне строки иммутабельные же?
Dr. Friedrich
Лучше тоже тогда заюзай какой-то стрингбилдер, а то у тебя мусора тут много.
Nikolay
for c1 in chars_list: for c2 in chars_list: for c3 in chars_list: result.append(c1 + c2 + c3)
Nikolay
Вот такая штука быстро работает
Dr. Friedrich
Предположу, что она не мусорит так сильно. Если интерпретатор умеет в оптимизацию string1+string2+string3
Dr. Friedrich
Вообще код какой-то фуфлыжный, ещё и рекурсию навернул :) Сложно его по памяти будет оптимизировать.
Vladislav
Так у тебя резалт не ленивый
Dr. Friedrich
Давай-ка берись за ум и делай норм
Vladislav
Понятно гигабайты рам жрет
Nikolay
Vladislav
Он и не должен быть
Просто не проще это итератором сделать а хранение на вызывающего отдать?
Vladislav
В питоне же они есть вроде
Dr. Friedrich
Всё равно будет хунта
Nikolay
Смысла нет
Nikolay
А потом в память загружается как dictionary
Dr. Friedrich
Vladislav
Оно потом в файл сохраняется
Тем более зачем оно в массив
Dr. Friedrich
В файл-то как раз есть смысл сохранять построчно или как-то буферить
Dr. Friedrich
Тебе точно не нужно 20 гигов памяти, чтобы сохранять потоково данные в 20-гиговый файл
Nikolay
Нельзя
Vladislav
Nikolay
for c1 in chars_list: for c2 in chars_list: for c3 in chars_list: result.append(c1 + c2 + c3)
Вот этот код замечательно работает
Vladislav
(Y f) = (f (lambda (x) ((Y f) x))) Чет я запутался в лиспе этом Тут что внутри происходит?
Nikolay
x)))
Vladislav
@AnutaU @omgszer
Dr. Friedrich
Dr. Friedrich
Зочем ты его рекурсивно записал?
Vladislav
Зочем ты его рекурсивно записал?
Это только середина статьи
Dr. Friedrich
А, ок
Vladislav
(Спустя 40 минут)
Vladislav
(define Y (lambda (f) (f (lambda (x) ((Y f) x)))))