functional-programming- все статьи тега ➜ страница 2


Как вы представляете график в Haskell?

достаточно легко представить дерево или список в haskell, используя алгебраические типы данных. Но как бы вы идете по поводу типографским способом, представляющий собой график? Кажется, что вам нужно иметь указатели. Я предполагаю, что вы могли бы иметь что-то вроде type Nodetag = String type Neighbours = [Nodetag] data Node a = Node a Nodetag Neighbours и это было бы осуществимо. Однако он чувствует себя немного развязанным; связи между различными узлами в структуре на самом деле не "чувству ...

Почему ленивая оценка полезна?

Мне уже давно интересно, почему ленивая оценка полезна. Мне еще нужно, чтобы кто-нибудь объяснил мне, что имеет смысл; в основном это заканчивается тем, что "доверяет мне". примечание: Я не имею в виду memoization. ...

Почему нет дженериков в Go?

отказ от ответственности: я только играл с Go в течение одного дня, так что есть хороший шанс, что я пропустил много. кто-нибудь знает, почему нет реальной поддержки дженериков/шаблонов/whatsInAName в Go? Так что есть общий map, но это предоставлено компилятором, в то время как программист Go не может написать свою собственную реализацию. Со всеми разговорами о том, чтобы сделать Go максимально ортогональным, почему я могу использовать общий тип, но не создавать новый? особенно когда он прихо ...

Истинное понимание разницы между процедурным и функциональным

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

F# разработка и модульное тестирование?

Я только начал с F#, который является моим первым функциональным языком. Я работал квази-исключительно с C#, и мне очень нравится, как F# заставляет меня переосмыслить, как я пишу код. Один аспект, который я нахожу немного дезориентирующим, - это изменение в процессе написания кода. Я использую TDD в течение многих лет в C# сейчас, и очень ценю, чтобы иметь модульные тесты, чтобы знать, где я нахожусь. до сих пор мой процесс с F# состоял в том, чтобы написать некоторые функции, играть с ними с ...

Группа путем подсчета в Java 8 stream API

Я пытаюсь найти простой способ в Java 8 stream API, чтобы сделать группировку, я выхожу с этим сложным способом! List<String> list = new ArrayList<>(); list.add("Hello"); list.add("Hello"); list.add("World"); Map<String, List<String>> collect = list.stream().collect( Collectors.groupingBy(o -> o)); System.out.println(collect); List<String[]> collect2 = collect .entrySet() .stream() .map(e -> new String[] { e.getKey(), ...

Карта или сокращение с индексом в Swift

есть ли способ получить индекс массива в map или reduce в Swift? Я ищу что-то вроде each_with_index в Руби. func lunhCheck(number : String) -> Bool { var odd = true; return reverse(number).map { String().toInt()! }.reduce(0) { odd = !odd return + (odd ? ( == 9 ? 9 : ( * 2) % 9) : ) } % 10 == 0 } lunhCheck("49927398716") lunhCheck("49927398717") Я хотел бы избавиться от odd переменная выше. ...

Функциональное программирование-дорого ли стоит неизменность? [закрытый]

вопрос состоит из двух частей. Первый-концептуальный. Следующий более конкретно рассматривает тот же вопрос в Scala. делает ли использование только неизменяемых структур данных на языке программирования реализацию определенных алгоритмов / логики по своей сути более вычислительно дорогостоящей на практике? Это приводит к тому, что неизменность является основным принципом чисто функциональных языков. Есть другие факторы, которые влияют на это? давайте возьмем более конкретный образец. Quicksor ...

Разница между reduce и foldLeft/fold в функциональном программировании (особенно Scala и Scala API)?

Почему Scala и фреймворки, такие как Spark и Scalding, имеют оба reduce и foldLeft? Так в чем же тогда разница между reduce и fold? ...

Имеет ли функциональное программирование отношение к веб-разработке?

Я так много видел в последнее время о функциональном программировании и Clojure выглядит особенно интересно. Хотя я "понимаю" основное описание того, что это такое, я не могу понять, как я буду использовать его изо дня в день в качестве веб-разработчика, если смогу вообще. Многое из того, что я прочитал, фокусируется на математической стороне функционального программирования, а не на типичных ситуациях программирования, найденных в обычном OO. У меня есть неправильный конец палки? Функциональн ...

Написать переводчик Haskell в городе Haskell

классика программирования-написать интерпретатор Scheme Лиспа/схемы сюсюкать/. Мощность полного языка может быть использована для создания интерпретатора для подмножества языка. есть ли подобное упражнение для Хаскелла? Я хотел бы реализовать подмножество Haskell, используя Haskell в качестве движка. Конечно, это можете будет сделано, но есть ли какие-либо онлайн-ресурсы, доступные для просмотра? Вот предыстория. I я изучаю идею использования Haskell в качестве языка для изучения некоторых ...

Скала против карринг, частичное применение функций

Я понимаю, что здесь есть несколько вопросов о что каррирование и частично прикладные функции есть, но я спрашиваю о том, как они отличаются. В качестве простого примера, вот функция карри для нахождения четных чисел: def filter(xs: List[Int], p: Int => Boolean): List[Int] = if (xs.isEmpty) xs else if (p(xs.head)) xs.head :: filter(xs.tail, p) else filter(xs.tail, p) def modN(n: Int)(x: Int) = ((x % n) == 0) таким образом, вы можете написать следующее, чтобы использовать это: va ...

Различие между типами monadplus, Alternative и Monoid?

стандартная библиотека Haskell typeclasses MonadPlus,Alternative и Monoid каждый предоставляет два метода с практически одинаковой семантикой: пустое значение: mzero,empty или mempty. оператор a -> a -> a что объединяет значения в классе вместе:mplus,<|> или mappend. все три закона указывают, каких инстанций следует придерживаться: mempty `mappend` x = x x `mappend` mempty = x таким образом, кажется, три классов типов являются обеспечение то же самое методы. (Alternative пред ...

Mathematica: что такое символьное Программирование?

Я большой поклонник Стивена Вольфрама, но он определенно не стесняется петь свой собственный Рог. Во многих ссылках он превозносит Mathematica как другую парадигму символического программирования. Я не являюсь пользователем Mathematica. мои вопросы: что это за символическое Программирование? И как это соотносится с функциональными языками (такими как Haskell)? ...

Почему вы решили "против" использования Эрланга?

вы действительно "пробовали" (значит запрограммированы, а не просто читали статью об этом) Erlang и решили отказаться от него для проекта? Если да, то почему? Кроме того, если вы решили вернуться к своему старому языку или использовать другой функциональный язык, такой как F#, Haskell, Clojure, Scala или что-то еще, это тоже считается и указывает, почему. ...

Что такое point free style в функциональном программировании?

фраза, которую я заметил недавно, - это концепция стиля "точка бесплатно"... во-первых, был этот вопрос, а также этот. затем, я обнаружил здесь они упоминают " еще одна тема, которую, возможно, стоит обсудить, - это неприязнь авторов к свободному стилю point." Что такое стиль "точка бесплатно"? Может кто-нибудь дать краткое объяснение? Это как-то связано с "автоматом" выделки? чтобы получить представление о моей уровень-я учил себя схеме, и написал простой интерпретатор схемы... Я понимаю, ч ...

Насколько полезно знать лямбда-исчисление? [закрытый]

всем людям, которые знают лямбда-исчисление: какое преимущество он купил вам, что касается программирования? Вы бы порекомендовали людям научиться этому? ...

почему сказка и рамда так отличаются?

Я изучаю javascript FP, читая Drboolean's книги. Я искал библиотеку функционального программирования. Я нашел Рамду и сказку. Оба претендуют на функциональную библиотеку программирования. но они такие разные: Ramda Кажется, содержит служебные функции для работы со списком: map, reduce, filter и pure функции: curry, compose. Он не содержит ничего, чтобы иметь дело с монадой, функтор. сказки однако не содержит никакой утилиты для списка или функций. Кажется, он реализует некоторые алгебра ...

Разделите массив JavaScript на куски с помощью подчеркивания.js

мне нужно разделить массив JavaScript в n размера куски. например: учитывая этот массив ["a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11", "a12", "a13"] и n равно 4, выход должен быть таким: [ ["a1", "a2", "a3", "a4"], ["a5", "a6", "a7", "a8"], ["a9", "a10", "a11", "a12"], ["a13"] ] Я в курсе чистого JavaScript решений для этой проблемы, но так как я уже использую подчеркивания.js мне интересно, если подчеркнуть обеспечивает лучшее решение для этого. Edit: Я созд ...

Когда и почему следует использовать аппликативные функторы в Scala

Я знаю, что Monad может быть выражено в Scala следующим образом: trait Monad[F[_]] { def flatMap[A, B](f: A => F[B]): F[A] => F[B] } Я вижу, почему это полезно. Например, даны две функции: getUserById(userId: Int): Option[User] = ... getPhone(user: User): Option[Phone] = ... Я могу легко написать функцию getPhoneByUserId(userId: Int) С Option - это монада: def getPhoneByUserId(userId: Int): Option[Phone] = getUserById(userId).flatMap(user => getPhone(user)) ... теперь я в ...