UFO ET IT

기능적 반응 형 프로그래밍 언어 사양

ufoet 2020. 12. 7. 21:17
반응형

기능적 반응 형 프로그래밍 언어 사양


나는 어느 시점에서 기능적 반응 프레임 워크를 만드는 데 혼란을 겪고 있습니다. 나는 그것에 대해 꽤 많이 읽고 몇 가지 예를 보았지만이 프레임 워크가 FRP 확장 / dsl로 간주되기 위해해야 ​​할 일에 대한 명확한 아이디어를 얻고 싶었습니다. 나는 구현 문제 나 세부 사항 등에 대해서는 실제로 관심이 없지만 완벽한 세계 상황에서 원하는 것이 무엇인지에 대해 더 많이 관심을 갖습니다.

이상적인 기능적 반응 형 프로그래밍 언어의 핵심 작업과 특성은 무엇입니까?


먼저 구현이 아닌 사양에 대해 질문하여 시작하게되어 기쁩니다. FRP가 무엇인지에 대해 떠 다니는 많은 아이디어가 있습니다. 나에게 그것은 항상 두 가지였습니다 : (a) 표현적이고 (b) 일시적으로 연속적이었습니다. 많은 사람들이이 두 가지 속성을 모두 삭제하고 다양한 구현 개념으로 FRP를 식별합니다.이 모두는 제 관점에서 볼 수 없습니다. 혼란을 줄이기 위해 작년 에 Jake McArthur가 제안한 것처럼 "기능적 반응 형 프로그래밍"이라는 용어가보다 정확하고 설명적인 "DCTP (denotative, Continuous-time programming)"로 바뀌 었으면 합니다.

"표현 적"이란 각 유형과 빌딩 블록의 의미를 정확히 지정하는 정확하고 단순하며 구현에 독립적 인 구성 의미론을 기반으로한다는 의미입니다. 그런 다음 의미론의 구성 적 특성은 구성 요소의 모든 유형이 올바른 조합의 의미를 결정합니다. 나에게 denotative 는 함수형 프로그래밍의 핵심이자 본질이며 정확하고 다루기 쉬운 추론을 가능하게하여 정확성, 도출 및 최적화의 기초가됩니다. Peter Landin은 모호한 용어 "기능적"에 대한 실질적인 대체물로 "표현 적"을 추천했으며 기능적으로 보이는 표기법과 깊이 / 진정한 기능적 프로그래밍을 구별하는 방법을 추천했습니다. 보기 이 댓글 일부 Landin 시세 및 종이 참조하십시오.

연속 시간에 대해서는 왜 연속 시간이있는 프로그램인가? 포스트를 참조하십시오 . 이 페이지에 AshleyF의 답변에 대한 나의 인용문. 컴퓨터의 불연속적인 특성을 고려할 때 연속적인 시간 이라는 개념 은 어떻게 든 부자연 스럽거나 구현이 불가능하다는 주장을 듣고 계속해서 놀랐습니다 . 이러한 사고 방식은 특히 Haskellers에서 왔을 때 몇 가지 이유로 나를 기이하게 만듭니다.

  • 게으른 기능적 언어를 사용하여 유한 기계 에서 무한한 데이터로 자연스럽게 프로그래밍 합니다. 결과적으로 John Hughes의 고전 논문 Why Functional Programming Matters에 설명 된 것처럼 멋진 모듈성을 얻게 됩니다.
  • 예를 들어 벡터 그래픽과 같은 연속 공간에서 프로그래밍의 많은 예가 있지만 Pan 과 같은 것들도 있습니다.
  • 나는 내 프로그램이 프로그램을 실행하는 기계보다는 문제 공간에 대해 어떻게 생각 하는지를 반영하는 것을 좋아하고, 다른 고급 언어 프로그래머들이 그러한 선호를 공유 할 것으로 기대하는 경향이 있습니다. ( "프로그래밍 언어는 관련없는 프로그램에주의를 기울여야 할 때 낮은 수준입니다."-Alan Perlis)

TBAGActiveVRML (최초의 DCTP / FRP 시스템) 이후 Fran 이후 지속적인 프로그래밍을위한 라이브러리를 만들고 있습니다. 올바르게 구현하는 것은 쉽습니다. 몇 가지 다른 접근 방식이 연속 모델링 애니메이션의 기능적 구현 문서에 설명되어 있습니다. 연속적인 시간을 효율적으로 (그리고 여전히 정확하게!) 구현하는 것은 또 다른 문제이며, 특히 변하지 않는 값을 다시 계산하는 것을 피하는 것입니다. ( 푸시-풀 기능 반응 프로그래밍 문서를 참조하십시오 .)

관련 발언을 참조하시기 바랍니다 내 대답을 반응성 및 기능성 반응성 프로그래밍의 차이 와에 (기능) 반응 프로그래밍은 무엇입니까? 업데이트 : 연속 시간이 중요한 이유에 대한 자세한 내용은 이 참고 사항을 참조하십시오 . 업데이트 : 또한 저의 2015 년 발표 FRP의 본질과 기원 (및 거기에 링크 된 관련 발표)을 참조하십시오.

탐색에 행운을 빕니다. 궁금한 점이 있으면 알려주세요. 내 연락처 정보는 내 홈페이지에 있습니다.


나는 당신이 아마 본 적이 가정 마티아스 펠리 센의 대화 기능 I / O에를 읽고 그의 종이 . 나는 그의 것이 매우 실용적이고 아름다운 접근이라고 생각합니다. Conal Elliott 의 훌륭한 작품을 발견 하셨기를 바랍니다 .

내 개인적인 요구 사항은 시스템이 완전히 순수하다는 것입니다. 즉, 모든 행동은 순수한 world->world기능에 의해 정의되고 모든 실현 또는 시각화는 world->visual기능에 의해 정의됩니다 . 시스템 visual출력에 대한 정적 설명은 어디에 있습니까 ?

내 다른 주요 기능은 히스토리 디버거입니다. world상태 의 기록을 유지하고 어느 시점에서든 재생할 수 있는 것은 비교적 사소한 일이어야합니다 .

매우 흥미로운 연구 (해결되지 않은 문제라고 생각합니다)의 한 영역은 world->world일부 개별 클럭 대해 함수를 반복하는 대신 연속 시간을 사용하는 것 입니다. 한 번 FRP에 대한 몇 가지 블로그 게시물을 작성 했고 Conal Elliott 는 다음과 같은 생각을 자극하는 댓글을 남겼습니다.

구성 가능성 및 의미 명확성을 위해 표시 / 기능적 접근 방식을 좋아합니다. 같은 이유로 나는 이산적인 시간과 공간보다 연속적인 시간과 공간을 선호합니다. 이 모든 경우에서 덜 기계와 유사한 공식은 기계 기반 프리젠 테이션의 방법과 무엇을 잘 구분합니다.

그것을 해결하면 당신은 영웅이 될 것입니다!

참고 URL : https://stackoverflow.com/questions/5875929/specification-for-a-functional-reactive-programming-language

반응형