関数型プログラミング

Devvr という名前のブログで Mochi が紹介されていました。

嬉しいのでリンクを貼っておきます(^_^) Mochi | Devvr

Mochi supports trailing closures from version 0.1.2

Mochi supports trailing closures from version 0.1.2. Example 1 def rmap(seq, closure): map(closure, seq) result = rmap([1, 2, 3]) -> print($1) $1 * 2 print(doall(result)) # -> 1 # -> 2 # -> 3 # => pvector([2, 4, 6]) Example 2 def foreach(s…

Mochiの開発経緯

たしか1年半1年くらい前に、何がきっかけかは忘れましたが、ふと、所謂オレオレ言語を作りたいと思いました。 非常に簡単な Scheme 処理系を作ったことがあったので、 Lisp 方言を作ろうと考えました。 Lisp 方言を作る過程で、新しいプログラミング言語を習…

Mochi が Infoworld とソフトアンテナブログで紹介されました。

Mochi が Infoworld とソフトアンテナブログで紹介されました。 Functional programming piques Ruby founder, picks up Python compiler この季節にぴったりのプログラミング言語「Mochi」 Infoworld の記事では、Ruby の開発者、まつもとさんの新言語、Str…

Mochi 0.0.9 をPyPIに登録しました。

Mochi 0.0.9 を PyPI に登録しました。 mochi 0.1.2 : Python Package Index Mochi 0.0.9 では、シーケンスの各要素を順番に、メッセージとしてアクターに送信する!>演算子と!&>演算子を導入しています。 !>演算子は、右辺のアクターに左辺の値をメッセージ…

PythonプログラマのためのMochi入門

# 元ネタはPythonプログラマのためのErlang入門←Erlang for Python Programmersの翻訳 MochiはPythonとよく似た構文の「Python上で動作する」、動的型付けの関数型言語だ。 この文章では、PythonとMochiで書いた階乗を計算する関数をとりあげ、関数型言語の…

Mochi を PyPI に登録

Mochi を PyPI に登録しました。 mochi 0.0.1 : Python Package Index mochi 0.0.1 : Python Package Index これにより、 $ pip install mochi でインストールできるようになりました。 インストール後は $ mochi >>> で REPL が立ち上がります。 気が向いた…

Mochi

Pythonと似た構文を持つプログラミング言語Mochiを作りました。 Purpleと同様にPython仮想マシン上で動作します。 i2y/mochi i2y/mochi · GitHub Purpleでシダを描いてみて、やっぱり前置記法では数式中心のコードは書きづらいなぁと思い、Purpleとは別にPyt…

Python と Purple で条件に当てはまる最初の要素をリストから取得

Python: find first element in a sequence that matches a predicate に Python でリスト(イテラブル)から条件に当てはまる最初の要素を取得する方法が、幾つか記載されています。 その中のベストアンサー的な方法のコード例が下記サイトに掲載されていま…

Python で Lisp 方言

Python で Purple という Lisp 方言を作りました。 Python の仮想マシン上で関数型プログラミングっぽいことをするための言語です。 Purple 実はつい先ほどまでSpicaという名前でしたが、 同名のLispマシン/処理系があったので、急遽名前を変更しました。 動…

Python でリストを flatten

Python でネストしたリストをflattenする方法が Pythonでリストをflattenする方法まとめにまとめられています。 一段ネストしたリストをflattenする最速の方法は、itertoolsモジュールのレシピに書かれているchain.from_iterable関数を使うことであることが…

Python で部分適用

Python で部分適用する場合は、functoolsモジュールのpartial関数を使います。 こんな感じです。 from functools import partial def print_name(first_name, last_name): print(first_name + ' ' + last_name) print_name_kurt = partial(print_name, 'Kurt…

Python でカリー化

関数をカリー化するデコレータを書いてみました。 def curried(func): arg_count = func.__code__.co_argcount l = ['lambda arg_{0}: '.format(n) for n in range(arg_count)] l.append('func(') l.extend(['arg_{0}, '.format(n) for n in range(arg_count…

Python でスタックを消費しない末尾再帰

末尾再帰でスタックを消費しないようにするためのデコレータが紹介されています。 New Tail Recursion Decorator « Python recipes « ActiveState Code Pythonで末尾再帰最適化をする。 Pythonのクロージャで末尾再帰最適化をする。 上記の各リンク先のコー…