2013-01-01から1年間の記事一覧

ピクセル指向プログラミング言語 Pixilang

Pixilangは、小規模なグラフィックス・サウンドアプリの作成や試作に向いた「ピクセル指向」プログライング言語だ。処理系がMIT Licenseのもとで公開されている。グラフィックスやサウンド処理に便利な機能が最初から用意されているし、しかもクロスプラット…

函数論理プログラミング言語 Curry

Curryはfunctional logic programming languageという聞きなれないカテゴリーに属する言語だ。もっとも、函数型プログラミングと論理型プログラミングは似通った点もあるから、そのふたつのパラダイムを併せ持ったプログラミング言語が存在するのはそんなに…

LibreLogoを使う

Ubuntu 13.04 (Raring Ringtail) で入る LibreOffice 4.0 には、ロゴで図形を描画する機能がある。 Raring リポジトリから必要なパッケージをインストールする。 $ sudo apt-get install libreoffice-script-provider-python libreoffice-librelogoそしてLib…

プログラミング言語 Proxima

id ::= \x -> x pred ::= succ \x -> x Nat ::= zero | succ Nat nat \z \s ::= zero -> z | succ \n -> s (nat z s n) Nat + Nat :: Nat \x + \y = nat x succ y Nat - Nat :: Nat \x - \y = nat x (pred | id) y

調子よくツイートしていたら上限に達してしまった 残ツイート数とか表示してくれないと困る

asm.js is 何

解説記事じゃないですし、内容は保証しません。 asm.js は低レベル言語 仕様書[1]によれば、asm.jsはJavaScriptの厳密なサブセットであって、コンパイラーの低レベルで効率的なターゲット言語として使うことができる言語だ。 This specification defines asm…

3DCGスクリプト言語案 save obj > "alpha.obj" let $cube = load obj < "cube.obj" for $r1 $r2 in load csv < "value.tsv" begin translate 5 0 0 rotate $r1 0 0 1 model $cube end begin translate -5 0 0 rotate $r2 0 0 1 model $cube end

ラムダ++

#include <iostream> int main() { for (int i = 0; i < 10; ++i) { auto x = [=](){ return i; }; std::cout << x() << std::endl; } } prog_cpp$ g++ -std=c++0x hellolambda.cpp prog_cpp$ ./a.out 0 1 2 3 4 5 6 7 8 9 prog_cpp$</iostream>

ラムダラムダ

TypeScriptは ()=> で Java8は ()-> なのか。辛い。2013-03-12 13:58:59 via SoraUsagi C++ [](int x) { return x > 0; } Python lambda x: x > 0 Ruby -> x { x > 0 } Haskell \x -> x > 0 C# x => x > 0 CoffeeScript (x) -> x > 0

Bool ::= False | True Nat ::= O | S Nat Maybe a ::= Nothing | Just a Not :: Bool -> Bool Not = False -> True | True -> False Match :: _ -> _ -> Bool Match a = a -> True | _ -> False Pred ::= S (x : Nat) -> x

send more money

import Control.Monad import Control.Applicative digit :: MonadPlus m => m Int digit = msum $ map return [0..9] exps :: Num a => [a] exps = map (10 ^) [0..] number :: Num a => [a] -> a number = sum . zipWith (*) exps . reverse uniqueDigits …

blockly - A visual programming editor - Google Project Hosting ..::CLAM::.. C++ Library for Audio and Music

明日からがんばる。

文字っ子が集った。

もっと色々なプログラミング言語を調べて比較してみよう

項書き換えに基づく関数型プログラミング言語 Pure

Pure Programming Language デフォルトは正格評価。指定すれば遅延評価も使える。 副作用を許容する。 バックエンドにLLVMを使っている。 C FFIを持つ。C言語などで書かれたライブラリを、簡単な宣言で呼び出すことができる。 変数には型がないが、データの…

7.3. 構文的拡張 Haskellの色々な構文的拡張。(ライブラリじゃなくてコンパイラへのオプションで構文を拡張するのってどうなんだろう……)

SVGじゃなくてWebFontで地図を頑張った URL らしいけどFirefoxならOpenTypeフォントにSVGを入れる仕様 URL を書いて実装してたりするよ URL2013-02-18 15:03:53 via Echofon Well, I'm Back: SVG In OpenType: A New Approach To SVG Fonts こんなの実装され…

プログラミングパラダイムについて何か書こうと思ったけど挫折。

「プログラミング自体が楽しい」って、どうなんだろう。プログラミングするためにプログラミングしているなんて、じゃあ結局なにをやったのかを説明するときに困る感じする。「これを作りたい」って情熱があってプログラミングしている人と比べたりすると、…

できていないパーサーの作り直し。演算子の数を増やす。関数型言語のように、自由に定義できるようにする。

名前の話(仮)

名前の管理はプログラミングにおいて大きな問題だ。名前は恣意的に付けることができるが、異なるものには異なる名前を付けないといけない。限られた名前を管理して、名前の衝突を避けなければならない。しかしあらゆるものを固有名で呼ぶこともできないから…

module Free data Free : (Type -> Type) -> Type -> Type where Pure : a -> Free f a Impure : f (Free f a) -> Free f a bind : Functor f => (a -> Free f b) -> Free f a -> Free f b bind k (Pure x) = k x bind k (Impure x) = Impure (fmap (bind k)…

Idrisで無限ストリーム

codataを使うと、無限ストリームが作れる。codata型のコンストラクターは遅延評価され、またcodata型を返す関数はコンパイル時に簡約されない。 module Main codata Stream a = (::) a (Stream a) iterate : (a -> a) -> a -> Stream a iterate f a = iterat…

依存型を持つ純粋関数型言語 Idris

Idris http://idris-lang.org/ は依存型を持つ純粋関数型言語。C言語経由でネイティブコードを生成する他、JavaScriptコードの生成もできるようだ。*1cabalを使ってインストールする。 cabal update; cabal install idrisハローワールドのソースコード。Idri…

CoffeeScriptで遅延評価(もどき)を実装しよう

遅延評価をまねる 厳密に言えば、遅延評価は式の評価戦略 evaluation strategy のひとつだ。JavaScriptとかLuaは正格な評価を行い、Haskellは非正格な評価を行う。正格な言語で非正格評価を真似る方法のひとつに、引数をすべてクロージャーでくるみ、使うと…

Coq 帰納法と余帰納法

前回、iterateとtakeを定義した。 Require Import List. Require Import Coq.Lists.Streams. Section MyStreams. Variable A : Type. CoFixpoint iterate (f : A -> A) (x : A) : Stream A := Cons x (iterate f (f x)). Fixpoint take (n : nat) (s : Strea…

ビジュアルプログラミング言語作りたい。色々調べる。ビジュアルプログラミング言語 - Wikipediaデータフロープログラミング - WikipediaLucid (プログラミング言語) - Wikipedia 1976年 「非ノイマン型 プログラミング言語の実験の為に設計された。」

無限リストと証明じゃないCoqの話

Haskellではじめて無限リストのコードを見たときはとても驚いた。遅延評価など知らないから、どうみても無限ループに陥りそうなプログラムがちゃんと動いているのが不思議だった。無限に続くデータさえ表現できる遅延データ構造はとても強力だ。大量のデータ…

融合変換の勉強しないとなー