함수형언어
-
람다와 스트림 - 함수의 결합백엔드/자바 2021. 8. 25. 19:57
수학에서 두 개의 함수를 결합할 수 있는 것처럼 자바에선 두 람다식을 결합할 수 있도록 하고 있다. 그리고 당연히 미리 준비된 메서드만 가져다 쓰면 된다. andThen() 예를 들어 위와 같은 코드가 있다고 가정해보자. 참조변수 ft1은 10진수를 넣으면 2진수로 반환하는 람다식을 저장하고 있다. 반면 참조변수 ft2는 2진수를 넣으면 10진수로 반환하는 람다식을 저장하고 있다. 만약 이 두 개의 함수를 합치고 싶다면 어떻게 해야할까? 그럴땐 andThen을 쓰면 된다. 위 코드와 같이 두 개의 함수를 andThen()메서드로 합쳐주면 두 함수는 하나로 합성된다. 이때 데이터의 흐름은 "ft1 (10진수 -> 2진수) => ft2 (2진수 -> 10진수)"로 된다. 그래서 정수 10을 입력하면 정수 1..
-
람다와 스트림 - java.util.function - part2백엔드/자바 2021. 8. 25. 14:44
람다와 스트림 - java.util.function - part1 이전 람다 파트에선 람다란 무엇인지, 람다를 사용하기 위한 방법, 함수형 인터페이스 등에 대해서 배웠다. 다시 한번 간단하게 복습하면 다음과 같다. - 람다식은 익명 객체를 간략하게 만든 표 sgcomputer.tistory.com 이전 파트에선 함수형 인터페이스를 쉽게 사용할 수 있게 만든 패키지 java.util.function에 대해 알아봤다. 이번 파트에서는 추가적으로 유용하게 쓸 수 있는 함수형 인터페이스에 대해서 알아보자. 매개변수가 두 개인 함수형 인터페이스 함수형 인터페이스 메서드 설명 BiConsumer void accept ( T t, U u ) 두 개의 매개 변수만 있고, 반환값이 없음 BiPredica..
-
람다와 스트림 - java.util.function - part1백엔드/자바 2021. 8. 24. 16:16
이전 람다 파트에선 람다란 무엇인지, 람다의 사용법, 함수형 인터페이스 등에 대해서 배웠다. 다시 한번 간단하게 복습하면 다음과 같다. - 람다식은 익명 객체를 간략하게 만든 표현식이다. - 익명 객체를 사용하려면 함수형 인터페이스가 필요하다. - 함수형 인터페이스를 통해 익명 객체를 사용 할 수 있고, 이때 익명 객체를 람다로 표현이 가능하다. 이제 예제를 보며 함수형 인터페이스와 람다 사용하는 방법을 복습해보자. 만약 두 숫자를 비교하는 기능을 하는 익명 객체를 만들어 사용해보고 싶다면? - 우선 함수형 인터페이스를 작성한다. - 형식에 맞게 람다식을 작성하고 함수형 인터페이스의 참조 변수에 람다식을 저장한다. - 참조 변수이용해서 숫자를 대입한 뒤 실행하여 결과값을 확인한다. 사실 예제가 간단해서 ..
-
람다와 스트림 - 람다식의 활용백엔드/자바 2021. 8. 24. 15:21
람다와 스트림 - 함수형 인터페이스 람다와 익명 객체() 람다와 스트림 - 람다식의 정의 람다식(Lambda Expression)이란? 자바 관련 예제를 보다보면 위와 같은 식을 코드를 볼 수 있다. 메서드들을 체이닝으로 이어준 것인데, 그 중에서 sgcomputer.tistory.com 이전 파트에서 익명 객체를 어떤식으로 만드는지, 그리고 그렇게 만들어진 익명 객체를 어떻게 람다식으로 간략히 표현하는지 알아봤다. 이번 파트에는 람다식을 활용한 다양한 예시를 알아보도록 하자. sort()에서의 람다 사용 위와 같이 String을 요소로 가지는 리스트를 정렬한다고 가정해보자. 이 리스트를 정렬할 때 Collections.sort()를 사용하는데 매개변수로 Comparator를 전달해야 한다. 하지만 위에..
-
람다와 스트림 - 함수형 인터페이스백엔드/자바 2021. 8. 24. 13:25
람다와 익명 객체() 람다와 스트림 - 람다식의 정의 람다식(Lambda Expression)이란? 자바 관련 예제를 보다보면 위와 같은 식을 코드를 볼 수 있다. 메서드들을 체이닝으로 이어준 것인데, 그 중에서도 filter() 메서드 안을 보면 특이한 코드를 볼 수 있 sgcomputer.tistory.com 이전 파트에서 말해듯 람다식의 가장 큰 특징이라하면 이름이 없다는 것을 꼽을 수 있다. 그리고 이름이 없으므로 람다식은 익명 함수라고 한 바 있다. 하지만 엄밀히 말하면 자바에서 람다는 익명 함수가 아닌 익명 객체라 할 수 있다. 왜냐면 자바에서 함수(메서드)는 단독으로 존재할 수 없기 때문이다. 코드로 보면서 설명을 보면 더 이해하기 쉬울 것이다. 왼쪽과 같이 이름이 없는 람다식이 있다고 가정..
-
람다와 스트림 - 람다식의 정의백엔드/자바 2021. 8. 24. 09:00
람다식(Lambda Expression)이란? 자바 관련 예제를 보다보면 위와 같은 식을 코드를 볼 수 있다. 메서드들을 체이닝으로 이어준 것인데, 그 중에서도 filter() 메서드 안을 보면 특이한 코드를 볼 수 있다. 화살표 기호로 무언가 표시해주고, 무언가 많이 생략된 것인데 이것을 람다식이라 부른다. 람다식은 익명함수의 하나로 메서드를 간단하게 하나의 식으로 나타낸 것이다. 참고로 첫번째 체이닝된 메서드들을 풀어서 쓰면 다음과 같다. 붉은 박스 안의 코드가 위에서 붉은 줄로 표시해준 람다식과 동일한 역할을 한다. 이처럼 복잡한 메서드를 만들거나 컬렉션 자료를 다룰 때 람다식을 쓰면 깔끔한 코드 작성이 가능하다. 물론 이러한 람다식도 단점은 있다. 람다는 많은 부분이 생략되어 표현되므로 작업 효율..
-
자바스크립트 고차함수 - find(), findindex()프론트엔드/JavaScript 2020. 10. 6. 15:59
find 메서드 자바스크립트 고차 함수 중에서 filter를 통해서 검색 기능을 구현할 수 있다고 했다. 그리고 배열 메서드 중 filter를 이용한 검색 기능과 비슷한 기능을 하는 메서드가 있다. find 메서드를 이용하면 배열에서 조건에 해당하는 첫번째 값을 반환한다. 사용법은 다음과 같다. 다른 배열 메서드와 마찬가지로 호출한 배열의 요소, 인덱스, 배열을 콜백함수를 통해 전달받을 수 있다. findindex 메서드 findindex는 find와 기능이 같다. 다만 배열의 value가 아닌 인덱스 값을 넘겨준다. 다른 배열 메서드와 마찬가지로 호출한 배열의 요소, 인덱스, 배열을 콜백함수를 통해 전달받을 수 있다.
-
자바스크립트 고차함수 - every(), some()프론트엔드/JavaScript 2020. 10. 6. 11:53
every와 some 메서드를 사용하면 배열 안에 특정 조건을 만족하는 요소가 있는지 판별할 수 있다. some 메서드 some 메서드는 배열 안의 요소 중 some이 파라미터로 받은 콜백함수의 조건에 맞는 요소가 단 한 개라도 있으면 true를 반환한다. 이때 some 메서드로 호출한 콜백함수는 some 메서드를 호출한 배열 요소, 배열의 인덱스, 배열 그 자체를 파라미터로 받아올 수 있다. every 메서드 every 메서드는 배열 안의 모든 요소가 every가 파라미터로 받은 콜백함수의 조건에 모두 해당되야 true를 반환한다. 이때 every 메서드로 호출한 콜백함수는 some 메서드를 호출한 배열 요소, 배열의 인덱스, 배열 그 자체를 파라미터로 받아올 수 있다.