Как я могу использовать функторы или аппликативы, чтобы переписать эту функцию Haskell над списками кортежей

ES6 предоставляет метод Array.from() , который создает новый экземпляр Array из объекта, подобного массиву или итерации.

let boxes = document.getElementsByClassName('box');

Array.from(boxes).forEach(v => v.style.background = 'green');
console.log(Array.from(boxes));
.box {
  width: 50px;
  height: 50px;
  margin: 5px;
  background: blue;
  display: inline-block;
}

Как вы можете видеть внутри фрагмента кода, после использования функции Array.from() вы можете манипулировать каждым элементом.

Это же решение с использованием jQuery.

$('.box').css({'background':'green'});
.box {
  width: 50px;
  height: 50px;
  margin: 5px;
  background: blue;
  display: inline-block;
}

1
задан cronburg 22 March 2019 в 18:35
поделиться

2 ответа

вам нужна функция mapPair, она определена в пакете утилит-ht , но просто

mapPair :: (a -> c, b -> d) -> (a,b) -> (c,d)
mapPair (f,g) (a,b) = (f a, g b) 

используется

Prelude> mapPair ((* 2), (* 3)) (2,3)
(4,9)

или [116 ]

Prelude> map (mapPair ((* 2), (* 3))) [(1,2),(2,3)]
[(2,6),(4,9)]
0
ответ дан Joseph Sible 22 March 2019 в 18:35
поделиться

Кортеж является бифунктором, поэтому доступно bimap .

import Data.Bifunctor

fncnB = (* 2)
fncnA = (* 3)
fs' = map (bimap fncnA fncnB)

Сторонних библиотек не требуется.

0
ответ дан Joseph Sible 22 March 2019 в 18:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: