Haskell 함수 구성이 파이프 및 필터 아키텍처 패턴의 인스턴스입니까?


9

파이프 및 필터 아키텍처 패턴은 일련의 처리 요소 로 정의되며 각 요소의 출력이 다음 요소의 입력이되도록 배열 됩니다. 모든 예제는 일종의 공유 버퍼를 통해 수행되는 프로세스 간 또는 스레드 간 연결을 고려하는 것 같습니다.

나에게 Haskell 함수 구성 이 동일한 작업을 수행하는 것 같습니다. 함수 순서에 관한 것이고 파이프로 명시 적 버퍼가 사용되지 않더라도이 패턴의 인스턴스라고 말할 수 있습니까? 그렇다면, 우리는 비 게으른 언어에 대해 같은 것을 말할 수 있습니까?

답변:


8

그것들은 연결되어 있지만 연결은 다른 방법입니다 (일종).

적절한 카테고리의 형태소 구성은 함수 구성 (카테고리가 Set엄격한 언어 및 CPO게으른 언어에 대한 경우)과 프로세스 구성 (카테고리가 오브젝트가 문자열 인 경우, 이름이 (AFAIK, 명명되지 않은) 범주 인 경우, 형태는 쉘임)를 정확하게 모델링합니다. 프로세스, 구성은 파이프 연산자입니다). 쉘 프로세스는 일반 함수 나 정확성의 손실없이 type의 (lazy) 함수로 볼 수 있으며 String -> WriterT String IO String순수한 type 함수는 type 함수와 String -> String무손실로 변환 될 수 String -> Identity String있으므로 둘 다 실제로 (>>=)변장합니다.


1
무엇 CPO카테고리는? 내 Google-fu는 약합니다 :(
Andres F.

3
@AndresF. 의 범주 Complete P클러스터 됨 Orders.
Ptharien 's Flame

2

차이가 있습니다. 파이프 및 필터는 데이터 및 데이터 연결을 처리하는 반면 Haskell 함수 구성은 일류 함수를 처리 합니다. 파이프와 필터가 아닌 방식으로 일류 기능을 구성 할 수 있습니다.

추가 자료
기능 프로그래밍의 맥락에서 구성 가능성이란 무엇입니까?


1
컴포지션 자체가 퍼스트 클래스 기능인 것처럼 컴포지션은 반드시 퍼스트 클래스 기능을 다룰 필요는 없습니다. 예를 들어 함수의 조성을 가지고 ++구성은, ., ++ . ++의 값을 두 번 증가하는 값을 반환하지만 것 ++일류 함수가 아니다, 그것은 단지 값과 반환 값을가집니다. composition 함수는 두 개의 함수를 취하고 하나를 리턴하는 첫 번째 클래스 함수입니다.
Jimmy Hoffa 2016 년

1
@ JimmyHoffa, 나는 당신이 '일류 함수'의 개념을 '고차 함수'와 혼동하고 있다고 생각합니다. 언어에 '일급 함수'가 있으면 다른 일급 데이터 형식을 처리하는 것과 동일하게 함수를 처리합니다. 그것들은 함수에 전달되거나 데이터 구조 등에 저장된 함수들로부터 반환 될 수있다. 고차 함수는 함수 매개 변수를 취하거나 함수 값을 반환함으로써 함수의 일류 특성을 이용한다.
Levi Pearson

@LeviPearson 네, 아침에 일어 났을 때 실수로 저의 뇌를 옆에 두었을 것입니다. 여기에 P.SE에 대한 좋은 콘텐츠를 작성하면서 계속해서 파고 들고 싶다면 P.SE의 일반 채팅
Jimmy Hoffa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.