함수형 프로그래밍에 대한 아주 간단한 소개

"버즈워드"기능 프로그래밍(FP), 구성, 포인트 프리 등을 들었는데 완전히 길을 잃었다면… 혼자가 아닙니다. 다음은 구성하고 기능적이고 포인트 프리 스타일의 프로그래밍을 따를 경우 할 수 있는 일에 대한 간략한 정보입니다.

const _ = require('lodash/fp')

const lines = [
  {
    name: "We're the eggmen",
    order: 2,
  },
  {
    name: "I'm the eggman",
    order: 1
  },
  {
    name: "I'm the walrus",
    order: 3
  }
]

function main(lines) {
  // generateSelectObject :: Object -> Object
  const generateSelectObject = ({ name, order }) => ({
    value: `${name}_${order},
    label: name,
  })

  const sortAndMapLines = _.compose(
    _.map(generateSelectObject),
    _.sortBy(['order'])
  )

  const orderedLines = sortAndMapLines(lines)

  orderedLines.unshift({
    label: 'All lines',
    value: 'All lines'
  })

  return orderedLines
}

const res = main(lines)
console.log(res)


이 지루한 코드에서 가장 흥미로운 부분은 다음과 같습니다.

const sortAndMapLines = _.compose(
  _.map(generateSelectObject),
  _.sortBy(['order'])
)


이것이 FP의 전부입니다. 무언가를 달성하기 위해 필요한 단계를 정의합니다. 이 경우에는 lines 의 결과를 정렬하고 매핑합니다. Lodash에서 sortmap라는 두 개의 함수를 작성하고 있으며 두 함수 모두 작업할 데이터를 명시적으로 선언하지 않기 때문에 포인트 프리입니다.

이 횡설수설이 도움이 되기를 바라며 작업을 수행하고 코드의 전반적인 품질을 향상시키는 더 나은 방법을 찾고자 하는 욕구를 불러일으킬 것입니다. 시작하기에 아주 좋은 곳은 Prof. Frisby'sMostly Adequate Guide to Functional Programming로 제가 매우 추천합니다.

좋은 웹페이지 즐겨찾기