Code Metaphor

Programming, Writing, Reading, Thoughts…

Phunctional 0.9 Beta 2 릴리즈

Phunctional 마일스톤 0.9-beta2 완료된 모습

Phunctional 0.9 Beta 2를 릴리즈했다. Phunctional은 PHP에서 함수형 프로그래밍(functional programming)을 흉내내는 프로젝트다. 람다, 클로져, 함수자, map(), filter(), reduce() 등의 기능을 제공하고 있다.

다운로드는 프로젝트 홈페이지에서 할 수 있다.

아래에 새로워진 것들을 늘어놓아보겠다. (그나저나 프로젝트 블로그를 따로 만들까 하는 생각도 든다. 이미 이 블로그는 Phunctional 프로젝트 블로그가 된 것 같음.)

모든 기능에 대해 단위 테스트 코드 추가

이번 버전에서 가장 많이 달라진 점은, 모든 기능에 대해 테스트 코드가 추가되었다는 점이다. 단위 테스팅 프레임워크로는 PHPUnit 3를 썼다. 이번에 테스트 코드를 작성하면서 잡은 버그도 굉장히 많았다.

Functor() 함수에서 MemberAccessor, MemberInvoker 인스턴스를 반환하는 기능 추가

이건 편의를 위해 추가된 기능인데, 다음 버전에서 좀더 강화될 예정. callable한 인자 아무 곳에나 '->member', '->method()' 형식의 문자열을 전달하면 MemberAccessor, MethodInvoker 인스턴스로 변환된다. (null을 전달할 경우 인수 그대로를 반환하는 함수자로 변환되는 것과 비슷하다.)

class Object {
    public $value;
    function __construct($value) { $this->value = $value; }
}

$values = map('->value', array(
    new Object(1),
    new Object(3.14),
    new Object('value')
));

assert(array(1, 3.14, 'value') == $values);

EventHandler 추가

말 그대로 이벤트 핸들러. 배열과 유사한 인터페이스를 지닌(ArrayAccess, IteratorAggregate 구현. foreach문에서도 쓸 수 있고, 첨자 연산자 []도 사용 가능) 함수자이다. 호출할 경우 가지고 있는 함수자들을 순서대로 호출하고, 그것들이 반환한 값들을 배열로 반환한다.

$this->eventHandler = new EventHandler;

$this->eventHandler[] = 'is_int';
$this->eventHandler[] = 'is_string';
$this->eventHandler[] = new Binding('substr', array(1 => 1, 2 => -1));

$string = 'The best way to predict the future is to invent it.';
$results = $this->eventHandler->call($string);
$expected = array(false, true, substr($string, 1, -1));

assert($expected == $results);

Filterable, Mappable, Injectable 추가

컨테이너의 자료구조에 따라 Filter, Transformation, reduce()의 적용 방식을 더 효율적으로 할 수도 있기 때문에 만든 인터페이스이다. 아이디어는 후배 이흥섭 군이 내줬는데 구현은 내가 다했다.

#7, [12] 참고.

그외 잡변화들

This entry was posted on October 25, 2007 at 6:43 PM. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

3 Responses to “Phunctional 0.9 Beta 2 릴리즈”

  1. 박진호 Says:

    php를 멋지게 쓰시는군요… ^^

    저두 좀 배워봐도 될까요?

    제가 만든 클래스에도 한번 적용시켜 봐야겠네요… ^^;

  2. 박진호 Says:

    php를 멋지게 쓰시네요… ^^

    만드신거 가지고 공부를 좀 해봐야겠습니다.

  3. Hong, MinHee (DAHLIA) Says:

    php를 멋지게 쓰시는군요… ^^

    저두 좀 배워봐도 될까요?

    제가 만든 클래스에도 한번 적용시켜 봐야겠네요… ^^;

    감사합니다. 흐흐

    소스는 다 공개되어 있으니 원하는 용도로 사용하시면 됩니다.

Powered by WordPress. Styled by Hong, MinHee. XML Feed, Comments XML Feed.