문제

레볼에는 목록 이해를 수행 할 수있는 내장 방법이 없습니다. 그러나 Debol에는 강력한 시설이 있습니다 ( parse) 도메인 별 언어 (DSL)를 만드는 데 사용할 수 있습니다. 나는 사용했다 parse 목록 이해력을위한 미니 DSL을 작성합니다. 표현을 해석하기 위해 이해력을 포함하는 블록은 함수로 전달되며, 더 나은 용어가 부족하여 comprehend.

예시:

comprehend [(a * b) for a in 1x100 for b in 4x10 where (all [odd? a odd? b])]

몇 가지 이유, comprehend 나에게 옳은 소리는 아니지만 같은 것 eval 너무 일반적입니다.

목록 이해를 위해 키워드 나 기능이 필요한 다른 언어를 찾지 못했습니다. 그들은 존재하는 곳마다 순수한 구문 설탕입니다. 불행히도 나는 그 옵션이 없습니다. 그래서, 내가 기능이 있어야한다는 것을보고, 좋은, 간결하고 논리적 인 이름은 무엇입니까?

도움이 되었습니까?

해결책

어때 select?

select [(a * b) for a in 1x100 for b in 4x10 where (all [odd? a odd? b])]

다른 팁

목록 이해력은지도와 유사하다고 생각할 수 있으므로 "ListMap"과 같은 것을 생각할 수 있습니다. 또는 목록 이해력은 세트 빌더 표기법을 기반으로하기 때문에 "빌드"또는 "빌드리스트"라인을 따라 무언가를 호출 할 수 있습니다.

(면책 조항 : 나는 Rebol에 대해 거의 알지 못 하므로이 이름이 이미 취해 졌는지 용서하십시오)

변환

do 목록 이해가 Monad 이해의 한 사례이므로 적절할 수 있습니다. do Haskell에서 Sugared Monadic 계산에 사용되는 키워드이지만 사용자 라이브러리에는 너무 모호하다고 생각합니다. 나는 내 목록 이해 기능을 불렀다 comp, 그러나 그것은 당신이 이미 가지고있는 것의 약어 일뿐입니다. 아마도 yielding? 예를 들어 yielding [(a * b) for a in 1x100 for b in 4x10 where (all [odd? a odd? b])]. 단지 일종의 곁눈질을하고 []가없는 척합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top