Maksim
я вообще концепцию просто закинул, а не продакшн код в любом функциональном языке это зашло бы
Славик
ну у нас же чат =) обсуждаем реализации абстрактной задачи
Dika
isProgression :: [Int] -> Int -> Bool isProgression (x : y : _) d | x + d /= y = False isProgression (_ : xs) d = isProgression xs d isProgression _ _ = True на хаскелле как-то так
Славик
всё же ок
Anonymous
лучше уж unshift делать
function osmxFunction(array, list = [-1,0,1]) { array = array.map(v => +v); if ( !array.every(v => isFinite(v)) ) { throw new TypeError("Excpected array of finite number"); } const isProgression = (arr, d, i = 1) => i >= arr.length ? true : arr[i] - arr[i-1] === d ? isProgression(arr, d, i + 1) : false; return list.map(d => isProgression(array, d)).indexOf(true) >= 0; }
Anonymous
вот с рекурсией
Славик
в худшем случае 2 лишних вызова функции
Anonymous
в худшем случае 2 лишних вызова функции
Я за элегантные решения. А если тебе нужна скорость, то это не про js вообще
Славик
ну every будет элегантнее, раз ты так
Anonymous
Denis
Сделал типизацию аргументов конструктора для рантайма https://www.npmjs.com/package/constructor-decorator
Maksim
рекурсия, map, indexOf. Это небыстро будет на любом ЯП
Рекурсия с оптимизацией будет по скорости как цикл
Славик
в компилируемом языке
Maksim
в компилируемом языке
Как цикл в этом же языке
Maksim
не обязательно в компилируемом, интерпретатор может соптимизировать тоже
Anonymous
Рекурсия с оптимизацией будет по скорости как цикл
В Котлине нужно явно декорировать функцию как tailrec, в Скала тоже. В GCC включать через флаг. Даже хаскель не всегда может TCO сделать
Anonymous
ну мы не про наличие возможности понятно что некоторые языки вообще в tco не могут
Да дело в том, что это очень сложная процедура и не всегда возможная. Как по мне лучше избегать рекурсии. Это разгрузит компилятор и гарантированно даст ту скорость, которую ожидаешь
Anonymous
в функциональных языках она не сложная там же просто вычищается стек от текущих значений и запускается с новыми
Нет! В Хаскель например используются thunks, в других ЯП могут trampolines (но это менее надежно)
Anonymous
В Клозюре continuation-passing style
Anonymous
Все они требуют что то наподобии strictness analysis (https://wiki.haskell.org/Performance/Strictness#Strictness_analysis). Очень дорогая операция
Anonymous
лучше уж unshift делать
Не намного дешевле создания нового массива.
Dika
есть функциональные языки без ленивости
Dika
вот окамл, кстати https://godbolt.org/z/Ky068S
E!
Привет! Может кто-то сталкивался с проблеммой при выделении двух параграфов html и подсвечивании их - этот выделенный контент смещался и не подсвечивался? исходный код: function highlightString(style) { var range = window.getSelection().getRangeAt(0); var startOffset = range.startOffset; var endOffset = range.endOffset; var selectionContents = range.extractContents(); var elm = document.createElement("highlight"); var id = guid(); elm.appendChild(selectionContents); elm.setAttribute("id", id); elm.setAttribute("onclick","callHighlightURL(this);"); elm.setAttribute("class", style); range.insertNode(elm); thisHighlight = elm; var params = []; params.push({id: id, rect: getRectForSelectedText(elm), startOffset: startOffset.toString(), endOffset: endOffset.toString()}); return JSON.stringify(params); }
Maksim
Нет! В Хаскель например используются thunks, в других ЯП могут trampolines (но это менее надежно)
из беглого гугления выяснил что видимо это связано с особым выполнением отложенных вычислений
Maksim
Нет! В Хаскель например используются thunks, в других ЯП могут trampolines (но это менее надежно)
тот же хаскель насколько я вижу для этого компилится с ключом в общем случае насколько я помню исполнение хвостовой рекурсии без раздувания колстека в функциональном языке достаточно тривиальная вещь
Anonymous
вот окамл, кстати https://godbolt.org/z/Ky068S
Да, с явным указанием @tailcall =)
Dika
Да, с явным указанием @tailcall =)
Нет, он тут не нужен
Dika
Да, с явным указанием @tailcall =)
@tailcall никак не влияет на то, произойдет ли tco. Просто если не произойдет, будет варнинг.
Dika
А так — окамл всегда автоматически оптимизирует хвостовую рекурсию
Anonymous
Ocaml compile time: 1471ms Полторы секунды на простенький пример. Капец!
Dika
Ocaml compile time: 1471ms Полторы секунды на простенький пример. Капец!
На моей машине: $ time ocamlopt -S a.ml -o a.opt real 0m0.146s user 0m0.072s sys 0m0.048s
Anonymous
Все равно дофига
Anonymous
Anonymous
Здравствуйте я начинющий никто у меня такой вопрос, есть например вот такое
Anonymous
ul>li*6>a
Anonymous
к 1 лементу li добавлю id свой
Anonymous
почему если я в js через innerHtml изменяю текст в этом li через id то все тили самого спика пропадают, именно этого елемента
Stepan
привет, через textContent попробуй
Anonymous
короче вот так
Anonymous
Anonymous
Illia
Покажи css
Stepan
innerHtml все содержимое подменит, если не ошибаюсь
Stepan
отсюда и проблема
Illia
Da
Illia
Покажи css
Ты может сделал стиль для ссылки, а innerhtml’ом ты её убираешь
Anonymous
стиль и для ссылки и для li для всеговместе стоит
Anonymous
а id для первого елемента стоит чтобы выделить страницу на которой я нахожусь
Anonymous
возможно в js можно как то обратится типа ul li a
Illia
queryselector
Stepan
а задача-то в чем? просто текст заменить или что-то иное?
Anonymous
Anonymous
ну я учусь js
Anonymous
почменял текст а оно у меня зназу в этом елементе просто вставило текст без стилей
Anonymous
которые были применены к списку
Anonymous
https://soften-studio.ru/
Illia
Стиль для текста ты задал ссылке потому что
Anonymous
А понял спасибо тупанул, там же нужно было просто теги а вставить и заработало бы все
Dzhanik
ты задал стиль ссылке, изза того что ты применяя innerhtml заменяешь тег А просто текстом у тебя естественно не будет стиля на ссылке, потому как ее уже нет
Anonymous
а так оно просто текст пишет
Stepan
а скинь текстом ul и его содержимое сюда
Anonymous
так разобрались уже
Dzhanik
а так оно просто текст пишет
в твоем случае можно использовать querySelector, если нужны все элементы пробегайся циклом и вставляй что нужно
Dzhanik
а так оно просто текст пишет
document.querySelector('ul>li>a') вот так вернет только первый элемент
Stepan
а, оке, не увидел
Dubzer
Привет всем. Может немного не по теме, но чата специализирующемся именно по верстке не нашел. Так вот, решил немного вкатиться в веб и сразу столкнулся с какой-то аномалией ) Такой вопрос, чем определяется растояние между верней и нижней границы экрана этой надписи? Ну или, где хотя бы можно про это узнать?
Dubzer
David
Если это h1-h6 там есть дефолтные margin-ы которые нужно убрать
Dubzer
Есть блок родитель? Посмотри его стили. Отступы скорее всего внутри него.
Если я правильно тебя понял, то никакого родителя у него нет, элемент лежит сразу в body, у которого из стилей только цвет заднего фона