, глядя через haskell prelude, я см. Функция const
:
const x _ = x
Я не могу находить ничего актуального относительно этой функции Отказ
Какой смысл? Может ли кто-нибудь привести пример того, где эта функция может быть использована?
Скажите, что Вы хотите повернуть список. Это - идиоматический способ сделать так в Haskell:
rotate :: Int -> [a] -> [a]
rotate _ [] = []
rotate n xs = zipWith const (drop n (cycle xs)) xs
Эта функция архивирует два массива с функцией const
, при этом первым является бесконечный циклический массив, при этом вторым является массив, Вы запустили с.
const
действия как граничная проверка и использование исходный массив для завершения циклического массива.
я, может казаться, ничто не нахожу релевантным относительно этой функции.
предположим требуется генерировать все подпоследовательности данного списка.
Для каждого элемента списка, в данной точке у Вас есть выбор Истинных (включайте его в текущую подпоследовательность), или Ложь (не включают его). Это может быть сделано с помощью функция filterM.
Как это:
λ> import Control.Monad
λ> :t filterM
filterM :: Applicative m => (a -> m Bool) -> [a] -> m [a]
λ>
, Например, мы хотим все подпоследовательности [1..4]
.
λ> filterM (const [True, False]) [1..4]
[[1,2,3,4],[1,2,3],[1,2,4],[1,2],[1,3,4],[1,3],[1,4],[1],[2,3,4],[2,3],[2,4],[2],[3,4],[3],[4],[]]
λ>