pointfree
Многие программисты haskell, включая меня, любят бессмысленный стиль, особенно при написании сложных синтаксических анализаторов. Они делают код более читаемым и менее многословным. Но иногда все происходит наоборот (например, при злоупотреблении экземплярами Monad и друзьями для (->) a). Пожалуйста, дайт...
Скажем, у нас есть (надуманная) функция, такая как: import Data.List (sort) contrived :: Ord a => [a] -> [a] -> [a] contrived a b = (sort a) ++ b И мы частично применяем его для использования в других местах, например: map (contrived [3,2,1]) [[4],[5],[6]] На поверхности это работает так, ка...
У меня есть следующая функция в Haskell agreeLen :: (Eq a) => [a] -> [a] -> Int agreeLen x y = length $ takeWhile ((a,b) -> a == b) (zip x y) Я пытаюсь научиться писать "идиоматические" Haskell, которые, похоже, предпочитают использовать . и $ вместо скобок, а также предпочитают безынерционны...
У меня есть задание в Хаскелле (нет, это не мое домашнее задание, я учусь для экзамена). Задача такова: Напишите беспунктовую функцию numocc, которая подсчитывает вхождения элемента в заданные списки. Например:: numocc 1 [[1, 2], [2, 3, 2, 1, 1], [3]] = [1, 2, 0] Вот мой код: addif :: Eq a => a -...
В качестве упражнения я пытаюсь реализовать интересные части прелюдии вручную. Всякий раз, когда я замечаю возможность пойти в точку бесплатно, я использую ее. Однако это привело меня к кирпичной стене в самом неожиданном месте. Используя этот код: myelem _ [] = False myelem x y = if x == head y then True...
Вот код: {-# LANGUAGE FlexibleContexts #-} import Data.Int import qualified Data.Vector.Unboxed as U import qualified Data.Vector.Generic as V {-# NOINLINE f #-} -- Note the 'NO' --f :: (Num r, V.Vector v r) => v r -> v r -> v r --f :: (V.Vector v Int64) => v Int64 -> v Int64 -> v Int64 ...
Можно ли это сделать без точек? var joinByKey = R.curry(function(key, model){ return R.assoc(key, R.join(',' ,R.prop(key, model)), model); }); var input = { a: ['1', '2', '3'] }; var result = joinByKey("a", input); // {"a": "1,2,3"} ...
Я знаю, что в некоторых языках (Haskell?) стремление состоит в том, чтобы достичь стиля без точек или никогда явно не ссылаться на аргументы функции по имени. Это очень сложная концепция для меня, чтобы освоить, но это может помочь мне понять, каковы преимущества (или, может быть, даже недостатки) этого стил...