고정 소수점 결합자가 무엇인지를 배우기 위해, 나는 내 자신을 썼다. (define combine (lambda (functional)
(functional (lambda args (apply (combine functional) args))))
내가 계승과 피보나치에 대한 함수 (Functionals)로이 테스트 한, 작동하는 것 같다
이 함수 f는 인수 목록을 받아들이고 동일한 인수 목록을 가진 다른 호출 가능 함수를 반환하므로 다른 함수가이 함수에 적용될 수 있습니다. from operator import add, mul
def f(*a, **kw):
return lambda g: g(*a, **kw)
map(f(3, 10), (add, mul)) # -> [13, 3
#include <iostream>
#include <string.h>
using namespace std;
int sk00(char * a) //use to find length, in characters, of an expression
{
int b = 1, c = 0;
while(b != 0)
{
저는 결합 자에 대해 읽고 얼마나 유용했는지 보았습니다 (예 : 하스켈의 파섹). 내 문제는 내가 어떻게 그들을 실질적으로 사용하는지 잘 모르겠다. 다음은 문제의 개요입니다. 배포판을 생성, 필터링 및 수정할 수 있습니다. 배포판을 결합하여 새로운 배포판을 만들 수 있습니다. 기본 인터페이스는 (의사 하스켈 타입 용어) : combine:: generat
파서 연결자를 사용하여 파서를 스칼라로 작성하려고합니다. 재귀 적으로 일치하는 경우 문에 오류가있을 때마다 좋은 오류가 발생합니다. 그러나 이것은 추한 긴 코드입니다. def body: Parser[Body] =
("begin" ~> statementList <~ "end" ) ^^ {
case s => { new Body(s); }
}
d
상호 재귀 함수의 튜플을 생성하기위한 고정 소수점 연결자가 있습니까? 나는. 나는 Y-Combinator와 같은 것을 찾고 있지만 여러 "재귀 적"* 함수를 사용하며 함수의 튜플을 반환 할 것입니까? * : 보통의 Y-Combinator 방식으로 논증으로서 자신과 (형제 자매)를 취하도록 작성 되었기 때문에 실제로 재귀 적이 아닙니다.
모나드 데이터 타입을 디자인하는 데 약간의 도움이 필요할 것입니다. 아이디어에 머리를 감싸는 데 어려움이있는 것 같지만, 원하는 것을 확실히 알고 있습니다. 그 유형 검사관 만이 그 문제에 대해 어떤 설득을 요구합니다. 내가 원하는 것은 모나드가 될 수있는 데이터 유형 Primitive입니다. 그 함수는 기본적으로 드로잉 프리미티브이며, parsec 라이브
JavaScript로 코미네이터를 만났을 때 Wikipedia를 우연히 만났을 때 S가 작동하게되어 자랑스러워했습니다. "Y 조합은 SKI- 미적분과 같은 : Y의 =의 S (K (SII)) (S (S (KS) K) (K (SII))) ", 그래서 그 시도했다 : var I = function (x) {
return x;
};
v
스칼라의 파서 결합자가 역 추적하지 않는 것처럼 보입니다. copy in to out .
되돌아와 구문 분석을 용이해야한다 : 나는 문법 (아래 참조)를 올바르게 다음 "STMT"을 구문 분석 할 수 없습니다가 stmt: (to out(copy in))
또는 내가 뭔가를 놓친 게 뭐죠? 파서 : 당신은 2.8 PackratParsers를 사용하려면