ちょっと草植えときますね型言語 GrassをAWKで実装してみるの巻。 Grass は λ-calculus(ラムダ計算)をベースにした「関数型言語」で、「関数定義」「関数適用」のみの組合せでプログラムを表現します。使う文字は W,w,v の3種類。(その他の文字は無視) 今回、こういう言語の実装には正直向いていなさそうなAWKで実装してみました。 AWKの上でYコンビネータが動いているのは自分でもあまり想像したくないのですが・・・grass.elのところにあるサンプルのうち、入力を伴うもの以外はとりあえず全部通るようです。 言語仕様としては、本家ドキュメントのほか、ここが参考になりました。 せめて配列がAWKでファーストクラスなオブジェクトだったら楽なんですが... 仕方がないので、文字列でなんでも表現しようではないか 関数は "/i[j]a.b;c.d;e.f;...;y.z;" のよ
brainfuck から Grass への変換器を書いてみました。brainfuck はできるけど、Grass はちょっと……という人向け。 # brainfuck のプログラム $ cat hello.bf +++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-. ------------.<++++++++.--------.+++.------.--------.>+. # grass のプログラムに変換 $ ruby19 braingrass.rb hello.bf > hello.www # 実行 $ ruby19 yagi.rb hello.www; echo Hello, world!ソースはこちら。 http://github.com/mame/grass-misc/tree/master/braing
#center(){&sizex(7){grass.elのぺえじ}} _, ._ ( ・ω・) んも〜 ○={=}〇, |:::::::::\, ', ´ 、、、、し 、、、(((.@)wvwwWWwvwwWwwvwwwwWWWwwWw wWWWWWWwwwwWwwvwWWwWwwvwWWW *何これwwwwwww Emacs上で、[[ちょっと草植えときますね型言語Grass>http://www.blue.sky.or.jp/grass/doc_ja.html]]のプログラムを実行や作成するためのプログラムです。 元々は[[ひげぽん氏のgrass.scm>http://d.hatena.ne.jp/higepon/20080605/1212678422]]を参考にして処理系だけ作るつもりだったのが、いつの間にか巨大化wwww ラムダ計算の学習にどうぞ。 ([[スクリーンショット>gras
ゆの in language なんか意外に簡単だった。何も面白くないけどどうぞ。 X | _ | X <: 来週も見てくださいね 来週も見てくださいね: @echo ひだまりスケッチ×365 $@ $ ls Makefile $ make ひだまりスケッチ×365 来週も見てくださいね $ ゆの in language 趣旨に反してるのばかり組んでるのは自分の能力不足ですはい。 HQ9Y+とは、プログラミング言語HQ9+の拡張版。 Hで"Hello world!"を出力、 Qで自身のソースコードを出力、 9で『99 Bottles of Beer』の歌詞を出力、 Yで"ひだまりスケッチ×365 来週も見てくださいね!"を出力、 +でアキュムレータに1を加える。 また、未知の文字が命令として与えられた場合は、なにも出力せず、その文字に次の文字(文字コードが1大きい文字)の実行内容を割り当てる
id:nishiohirokazuさんが割と直球で書いていたので、小細工しつつ2時間ほどがんばって草植えてみたwww Helloworldに2時間とかwwwwwww 改行除くと751→738文字。 wvwWwwwwWwwwwwwWWWWWwWWWWWwwwwvwwwwWWWwwWwwWWWWWWwwwwWwwvwWWwWwwvwwWWwvwWWWwwWW WWWwwwWwwWWWWWWwWWWWWWWwWWWWwWWWWWwWWWWWWwWWWWWWWWWWWWWWwwwwwwwwWwWwWWWwwWWWWww wwwwwWWWWWwwwwwwwWWWWWWwwwwwwwWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwWwwwwww wwwwwwwwwwwwwwWwwwwwwwwwwwwwWwwwwwwWWwwwwwwWWWwwwwwwWWWWWWwww
wWWWwWWWWwv wWWwWWWwv wWWwWWWwv wWWwWWWwv wWWwWWWwv wWWwWWWwv wWWwWWWwv wWWWwWWWWwv wWWwwwwwwwwwwwwWWWWWWwWWWWWWwWWWWWWWWWwWWWWWWWWW WWWWWWwWWWWWWWWWWWWWwWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWww wwwWWWWWWWWWWWWWWWWwwwwwwwWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWwWWWW WWWWWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwWWWWWWWWWWWWW WWWWWWWWwWWWWWWWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWWWWWWWWW
こっちも貼っとく。 ( Grass the grass-planting programming language ) 初めて触った関数型言語がコレなんだけど、FizzBuzzが書けません。 これもzick氏が作ったのかなと思ったけど違うみたい。 Grassのページからもリンクしてあったけど、原作者製でもないのかな。 追記 ブクマにPerlの偉い人のGrassコードが!と思ったらどう見ても適当なw連打です。ありがとうございました。 投稿者コメにあるコードをCommonLispで適当に解説 wWWwwww (wを一個出力) (defun main (self) (out w)) wWWwwwwWWww (ずっとwのターン) (defun main (self) (progn (out w) (funcall self self))) main関数は (main #'main) という感じで、
Hey Webmasters! New Photo Album Service Launched - Check it out! This programming language was actually inspired by Befunge. Most languages are one-dimensional, and Befunge is two- dimensional and can be extended to n dimensions. The only thing that was missing (other than fractal programming languages) was a zero-dimensional language. Since I had no idea what a zero-dimensional language would loo
初めての方は、仕様やサンプルソースをお読みください。 更新履歴 [2007/04/14] 完成 [2007/07/13] 公開 [2011/06/19] Iコンビネータおよび、Iコンビネータを生成する^^を追加 概要 COSAK(Constructed from Only S And K)はその名の通り、"S"と"K"だけから構成される関数型(?)言語です。 構文として、sとkと、それらを使った関数適用しか用意していません。関数抽象なんてどうでもいいです。 もちろん変数なんてありません。これで変数のスコープがどうとかいうことで悩む必要はなくなりましたね。 こう書くと、何も出来なさそうですが、実は、高階関数(のようなもの)を使えるなど、その表現力は意外と高いです。 実用的かどうかは、サンプルソースを見て実際に試してみて考えてください。すぐに分かります(笑) 入力: 出力: 仕様 構文: fo
Haskell Hackathon が楽しそうだったので、昔作りかけて放置してあった Haskell コンパイラを引っ張り出してきました。 せっかくなので、最もタメになる初心者用プログラミング言語であるところの Lazy K へのトランスレータにしてみました。 hs2lazy.tgz (最新版は github にあります) こんなのが動きます。 {- reverse lines -} main :: Stream -> Stream main stdin = toStream $ unlines $ reverse $ lines $ fromStream stdin main の型が何やら変ですが気にしない方向で。 もちろん tarai も動きます。Intの実装がChurch数なので速くはないですが…。 $ hs2lazy Prelude.hs tarai.hs >tarai.lazy
元ネタ→http://shinh.skr.jp/m/?date=20080206#p08 量子の気分(というより宇宙消失の気分)だけ味わえそうなものを考えてみました。 Brainfuckと同じく8命令予定ですので初心者向けかもしれません。 仮想マシンの構成としては、qubitの無限列があって、カーソルがどこかを指しています。 各qubitは0か1を取ることができて、最初は全部0です。 命令は次のものがあります。 ? 現在位置に重ね合わせ状態を置く ! 現在位置を収束させる . 現在位置の1ビットデータを出力する , 入力した1ビットデータを現在位置にセットする > カーソルを右に1qubit移動 カーソルを左に1qubit移動 [ 現在位置が0なら対応する]の次にジャンプ ] 対応する[にジャンプ +と-が?と!になった以外は、データ単位をバイトではなくビットにしたBrainfuckと同じ
まず、世界中のプログラマが誰でも一番最初に作るであろう「Hello, world!」を標準出力に表示するプログラムを書いてみましょう。 C言語 2006-12-19 char main[]= "QVWUZ%@@@@% P^JJJJJJJJJJJJJJJJJJJJJJJJ3B PVXH, PTXHHHH!0Z_18R_)8)8)8)8" ")8)8)8)8WV_38WX_)8)8)8@)8@@@@)8)8)8T_VXOOOOOOOOOOOOOOOOOOOOOOOOWYVX!75Hel" "lVP^17^GGGGVX!75o, wVP^17^GGGGVX!75orldVP^17^GGGGVX!75aJ@@5@@@@VP^17^VXP[" "PZBBBBBBBBBBBBBBC@@@@AHI@AHI@AHI@AHI@AHI@AHI@j__^Y`"; このプログラムを hello.c という名前で保
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く