Вопросы с тегом «functional-programming»

Функциональное программирование - это парадигма программирования, основанная на построении абстракций с использованием функций, избегая побочных эффектов и изменения состояния. Чистое функциональное программирование является поточно-ориентированным.

6
Чистые функции: означает ли «отсутствие побочных эффектов» «всегда одинаковый результат при одинаковом вводе»?
Два условия, которые определяют функцию pure, следующие: Без побочных эффектов (т.е. разрешены только изменения в локальной области) Всегда возвращать один и тот же вывод, учитывая тот же ввод Если первое условие всегда верно, бывает ли когда-нибудь второе условие неверно? Т.е. действительно ли это необходимо только с первым условием?

8
Какова мотивация присвоения Scala оценивать Unit, а не присвоенное значение?
Какова мотивация присвоения Scala оценивать Unit, а не присвоенное значение? Обычный шаблон в программировании ввода-вывода - это делать что-то вроде этого: while ((bytesRead = in.read(buffer)) != -1) { ... Но в Scala это невозможно, потому что ... bytesRead = in.read(buffer) .. возвращает Unit, а не новое значение bytesRead. Похоже, что …

4
Что такое зависимая типизация?
Может ли кто-нибудь объяснить мне зависимую типизацию? У меня мало опыта работы с Haskell, Cayenne, Epigram или другими функциональными языками, поэтому чем проще термины, которые вы можете использовать, тем больше я буду признателен!

5
python: получить количество элементов из списка (последовательности) с определенным условием
Предполагая, что у меня есть список с огромным количеством элементов. l = [ 1, 4, 6, 30, 2, ... ] Я хочу получить количество элементов из этого списка, где элемент должен удовлетворять определенному условию. Моя первая мысль была: count = len([i for i in l if my_condition(l)]) Но если отфильтрованный …

18
В чем смысл класса Option [T]?
Я не могу понять смысл Option[T]класса в Scala. Я имею в виду, я не вижу никаких преимуществ Noneсверх null. Например, рассмотрим код: object Main{ class Person(name: String, var age: int){ def display = println(name+" "+age) } def getPerson1: Person = { // returns a Person instance or null } def …

3
Схемы рекурсии для чайников?
Я ищу действительно простые и понятные объяснения схем рекурсии и схем коркурсии (катаморфизмы, анаморфизмы, гиломорфизмы и т. Д.), Которые не требуют перехода по множеству ссылок или открытия учебника теории категорий. Я уверен, что неосознанно заново изобрел многие из этих схем и «применил» их в своей голове в процессе кодирования (уверен, …

5
Разделить массив JavaScript на куски с помощью Lodash
Мне нужно разбить массив JavaScript на nкуски определенного размера. Например: учитывая этот массив ["a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11", "a12", "a13"] и a nравно 4, результат должен быть таким: [ ["a1", "a2", "a3", "a4"], ["a5", "a6", "a7", "a8"], ["a9", "a10", "a11", "a12"], ["a13"] ] Мне …

5
Scala currying против частично применяемых функций
Я понимаю, что здесь есть несколько вопросов о том, что такое каррирование и частично применяемые функции, но я спрашиваю, чем они отличаются. В качестве простого примера приведем каррированную функцию для поиска четных чисел: def filter(xs: List[Int], p: Int => Boolean): List[Int] = if (xs.isEmpty) xs else if (p(xs.head)) xs.head :: …

2
Функциональные линзы
Может ли кто-нибудь объяснить мне функциональные линзы? Это удивительно сложная тема для Google, и я не добился никакого прогресса. Все, что я знаю, это то, что они предоставляют ту же функциональность, что и в OO.

3
Что именно подразумевается под «частичной функцией» в функциональном программировании?
Насколько я понимаю, частичные функции - это функции, которые мы получаем, передавая в функцию меньше параметров, чем ожидалось. Например, если это было правильно в Python: >>> def add(x,y): ... return x+y ... >>> new_function = add(1) >>> new_function(2) 3 В приведенном выше фрагменте, new_functionэто частичная функция. Однако, согласно Haskell Wiki …

2
Как уменьшить дублирование кода при работе с рекурсивными типами сумм
В настоящее время я работаю над простым интерпретатором языка программирования, и у меня есть такой тип данных: data Expr = Variable String | Number Int | Add [Expr] | Sub Expr Expr И у меня есть много функций, которые делают простые вещи, такие как: -- Substitute a value for a …

2
Haskell: класс типов против передачи функции
Мне кажется, что вы всегда можете передавать аргументы функции, а не использовать класс типов. Например, вместо определения класса типов равенства: class Eq a where (==) :: a -> a -> Bool И использование его в других функциях для указания аргумента типа должно быть экземпляром Eq: elem :: (Eq a) => …

2
Есть ли разница между типовыми сигнатурами a -> b -> a и c -> a -> c?
Этот вопрос является теоретическим вопросом о функциях Haskell, которые могут принимать аргументы любого типа. Есть ли разница между способом функций с сигнатурами типа a -> b -> a а также c -> a -> c создаются? Любая помощь приветствуется.

1
Есть ли в представлении Ван Ларховена `Optional`
Многие виды оптики имеют представление Ван Ларховена. Например, Lensтип Lens s t a b может быть представлен как: Functor f => (a -> f b) -> s -> f t Аналогично, a Traversalможет быть представлен аналогичным образом, поменяв местами Functorограничение Applicative: Applicative f => (a -> f b) -> s …

3
Возможно ли реализовать эту функцию слова без шага постобработки после свертывания?
Real World Haskell, глава 4, стр. 98 печати спрашивает, wordsможно ли реализовать с помощью сгибов, и это тоже мой вопрос: Является ли это возможным? Если нет, то почему? Если это так, как? Я придумал следующее, которое основано на идее, что каждый непробел должен быть добавлен перед последним словом в списке …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.