Вопросы по теме 'pointfree'
найти уникальные матрицы из большей матрицы
Я довольно новичок в функциональном программировании, поэтому я прохожу некоторые практические упражнения. Я хочу написать функцию, по заданной матрице уникальных натуральных чисел, скажем 5х5, возвращающую набор уникальных матриц меньшего размера,...
435 просмотров
schedule
07.02.2024
Попытка написать функциональную точку бесплатно, GHCI не одобряет
В качестве упражнения я пытаюсь реализовать интересные части прелюдии вручную. Всякий раз, когда я вижу возможность пойти бесплатно, я использую ее. Однако это привело меня к кирпичной стене в самом неожиданном месте. Используя этот код:
myelem...
396 просмотров
schedule
27.01.2023
Бесточечный стиль в Template Haskell
Рассмотрим следующую функцию Template Haskell:
composeQ :: ExpQ -> ExpQ -> ExpQ
composeQ = \x y -> [| $(x) . $(y) |]
Можно ли исключить лямбда-выражение из правой части уравнения и записать composeQ в бесточечном стиле?
225 просмотров
schedule
23.10.2022
Используйте функцию a → b как монадическую функцию a → m b
В настоящее время я играю с основами Haskell и наткнулся на следующий «прецедент»:
ghci> let divideTenBy x | x == 0 = Nothing | otherwise = Just (10 / x)
ghci> let composed = divideTenBy <=< return . (*10) <=< divideTenBy...
222 просмотров
schedule
10.08.2023
Функция без точек не вызовет рекурсию, но нормальная функция будет здесь?
В качестве побочного вопроса здесь Что проще всего способ сделать что-то вроде делегирования многоадресной рассылки в F # Я думаю, может быть, лучше поднять полный вопрос с правильным заголовком.
Эта версия не вызовет рекурсии: (Здесь notify...
115 просмотров
schedule
26.09.2022
Краткий синтаксис для частичного в Clojure
Некоторое время назад, изучая Haskell, я влюбился в бесточечную нотацию и в особенно удобное приложение с частичными функциями — знаете, просто укажите аргументы. В Clojure у меня все время partial . Я думаю, что было бы неплохо иметь специальный...
940 просмотров
schedule
11.04.2022
Общий шаблон, включающий композицию функций (\a b -> f (g a) (g b))
Композиция f и g, которая выглядит как
f :. g = \a b -> f (g a) (g b)
это шаблон, который я очень часто встречаю в своем коде. Это похоже на композицию унарной функции, только f является двоичной, и я хочу, чтобы g применялось к обоим...
401 просмотров
schedule
22.06.2022
($) относится к (.), как и `fmap`?
У меня есть функция funcM :: a -> b -> c -> IO (x, y)
Я хочу написать функцию funcM_ :: a-> b-> c-> IO x так:
funcM_ = fst `fmap` funcM -- error
Я мог бы добавить обратно все точки, но кажется, что должно быть что-то,...
368 просмотров
schedule
19.04.2024
Возможно ли снижение эта?
Можно ли применить сокращение eta в приведенном ниже случае?
let normalise = filter (\x -> Data.Char.isLetter x || Data.Char.isSpace x )
Я ожидал, что что-то вроде этого будет возможно:
let normalise = filter (Data.Char.isLetter ||...
291 просмотров
schedule
04.05.2022
Не удается получить безточечную нотацию для компиляции в Haskell
Это работает
unique :: (a -> Bool) -> [a] -> Bool
unique p xs = 1 == length (filter p xs)
Но теперь я хочу это в форме:
unique = (== 1) . length . filter
Сообщение об ошибке:
Couldn't match expected type `[a] -> Bool'...
162 просмотров
schedule
29.05.2024
Создание бесточечной линзы не проверяет тип
В функции test я просматриваю список, генерирую линзы из его членов, а затем печатаю некоторые данные. Это работает, когда я использую точечный стиль вызова. Он не проверяет тип, когда я делаю его безточечным.
Почему это так, и как я могу...
114 просмотров
schedule
24.07.2023
Безточечная конвертация
У меня есть некоторые функции перемещения/доступа для работы с моим типом сетки:
cell :: Mesh a -> Int -> Maybe (Cell a)
neighbour :: Mesh a -> Int -> Cell a -> Maybe (Cell a)
owner :: Mesh a -> Cell a -> Maybe (Cell a)...
85 просмотров
schedule
18.09.2023
Понимание `ap` в бесточечной функции в Haskell
Я могу понять основы безточечных функций в Haskell:
addOne x = 1 + x
Поскольку мы видим x по обе стороны уравнения, мы его упрощаем:
addOne = (+ 1)
Невероятно получается, что функции, в которых один и тот же аргумент используется...
2974 просмотров
schedule
05.03.2022
Добавить действие без изменения результата в нотацию рефакторинга
Я хочу последовательно скомпоновать два монадных действия в Haskell, отбросив любое значение, созданное вторым, и передав аргумент обоим действиям. В настоящее время я использую такой do-блок:
ask = do
result <- getLine
putStrLn result...
128 просмотров
schedule
23.05.2022
Бесточечная отладка
Итак, мы используем в работе очень хорошую библиотеку ramda , и это здорово, потому что мы можем использовать в основном бесточечный стиль кода. Проблема в том, что гораздо меньше мест, где можно посмотреть, когда что-то идет не так, указывает на...
1151 просмотров
schedule
15.04.2023
Составная функция без точек с расширенными аргументами
Я пытаюсь выяснить, существует ли шаблон для написания бесточечной составной функции, когда аргументы должны распространяться в каррированных составных функциях , т.е. (с Ramda):
add_1_and_multiply = (add, mul) => R.compose(R.multiply(mul),...
76 просмотров
schedule
26.11.2023
Обдумывая название паттерна, наблюдаемого в Elm, и другие подобные случаи
В настоящее время я студент FP. Когда я смотрю на различные варианты синтаксиса, предлагаемые различными функциональными языками, я наткнулся на шаблон в примере кода Elm. Мне это интересно.
Вот пример кода
myList = [{foo = "bar1"},{foo =...
220 просмотров
schedule
23.04.2024
Диапазон безточечных труб с Ramdajs
У меня есть функция, которая создает диапазоны:
const range = from => to => step => ....
И я хочу создать другую функцию, которая что-то делает с этим диапазоном, но я хочу использовать pipe.
Например, я хочу получить сумму...
122 просмотров
schedule
25.08.2023
Эквивалентный сеттер, соответствующий геттеру .foo для типа записи Elm.
Мне нужно написать много геттеров и сеттеров для моей модели (это рекорд). Геттеры очень лаконичны, и я доволен этим.
getFoo = .foo
Это идеально подходит для использования в качестве встроенной функции без указания имени:
Maybe.map .foo...
152 просмотров
schedule
28.12.2022
Замена символа в строке на строку в Haskell в бесточечном стиле
Идея состоит в том, чтобы написать замену функции, которая принимает три аргумента, подстановочный знак, строку подстановки и входную строку. Пример будет выглядеть как replace '*' "foo" "foo*" = "foobar" . Обычно это не было бы слишком большой...
93 просмотров
schedule
31.08.2022