プログラミング

遅延リストで素数

Prime numbers - HaskellWiki から移植。 -- from www.haskell.org/haskellwiki/Prime_numbers minus = (X, Y) -> return X if Y\empty! x, xs = X\head!, X\tail! y, ys = Y\head!, Y\tail! if x < y Sequence\ConsDelay (-> x), Delay -> minus xs, Y else…

Lua/MoonScriptで部分関数

昨日の続き。 util = require 'util' import Function, Switch, Case, Delay, List, Array, Sequence from util _ = util.it require 'std' print '# Function combination' print "(_ + 5 .. _ * 2)(1) ==> #{(_ + 5 .. _ * 2)(1)}" print '# Partial funct…

Lua/MoonScriptで遅延リスト

MoonScriptで遅延リストを実装した。 list = require 'list' import Function, Delay, List, Array, Sequence from list require 'std' local fib fib = Sequence\Table({1, 1})\appendDelay -> fib\zipWith op['+'], fib\tail! nat = Sequence\iterate (=> …

何でも無限リスト

純Lispにはアトムとリストがあるけど、アトムを無くして、なんでも無限リストにしたらどうだろう? 今までアトムだと思っていたものは、実はリストだったのだ。 なんでもリストだから、carとcdrは何にでも適用できる。carは左のリストを取り出し、cdrは右の…

新しいプログラミング言語

新言語登場 新しいプログラミング言語を作っています。mandel59/psil · GitHub現状はこんな感じ。 let x: 'ハロー' y: add(+'1', +'9') z: {a: x; b: y} debug.print "\(z.a)ワールド \(z.b)"……でも内容はこれから色々変えるので、多分このままの形では残り…

プログラミング言語Egisonのパターンマッチ機能をLua上で実装してみた

Programming Language Egison プログラミング言語Egisonは、強力なパターンマッチ機能を持つという。とりあえず、同じような機能をLua上で使えるように、MoonScriptを使って実装してみた。 mandel59/egimoon · GitHub print show match_all {1, 2, 3}, (List…

ぼくのかんがえた、さいきょうのげんご 1

周りで言語を考えたり処理系作ったりしている人がいると、自分でも作りたくなってきた。ここで、「僕の考えた最強の言語」の青写真を書こうと思う。 自然言語に学ぶ Perlのやったように、自然言語に学ぶことは多いと思うので、自然言語の持つ性質をいろいろ…

糖衣がけのMoonScriptはいかが?

MoonScriptが気に入ったので、構文について色々書き散らしたいと思う。解説記事とか入門記事じゃないよ。文法知りたい人はリファレンス読みましょう。 (MoonScript v0.2.2 - Language Guide) MoonScriptとは Luaにコンパイルするスクリプト言語。現時点での…

GObject Introspection

GObjectIntrospection - GNOME Live! GObject Introspectionはスゴイヤツである。こいつがあれば、GObjectを使っているC言語のライブラリへのバインディングを自動的に生成してくれる。今までだったら、言語ごとで個別にバインディングを作成しないとダメな…

Sui ― GUI Library for LÖVE (1) フォーカス

LÖVEでゲームを作ろう 3 簡単なUI - M59のブログ LÖVEでゲームを作ろう 4 クロージャー - M59のブログ 上の2つに次いで、3つ目のSuiの記事。今日はフォーカス機能を実装した。これがあれば、フォーカスのあるウィジェットだけ反応するようにもできる。前回書…

LÖVEでゲームを作ろう 3 簡単なUI

(簡単なUIとは使うのが簡単というより作りが簡単という意味) LÖVEで使えるGUIライブラリはCategory:Libraries - LOVEにいくつか載っているのだけれども、自分で簡単なGUIライブラリを作ってみることにした。 成果物: mandel59/lovesui · GitHub コードを抜…

LÖVEでゲームを作ろう 2 ゲームを実行したまま開発するには

Luaを使ったゲーム開発の利点は、コンパイルの必要がなく、コードを書き換えたらその場ですぐに試せることだ。 LÖVEでは、次のコードを使って、動的にLuaを読み込むことができる。 -- これはコードを読みこむだけで、まだ実行されない。 chunk = love.filesy…

LÖVEでゲームを作ろう 1 日本語でこんにちは

LÖVEはオープンソースの2Dゲームエンジンで、Lua言語でゲームを創ることができる。作ったゲームはWindowsとMac OS X、Linuxで遊ぶことができる。 MOONGIFTの記事: Luaで作る2Dゲーム「LÖVE」|オープンソース・ソフトウェア紹介を軸としたITエンジニア、Webデ…

作業ログだけ。 Flapjax – Functional Reactive Programming in Javascript | Continuous Learning Functional Reactive ProgrammingをJavaScriptでやる 円 ベジェ 近似 - Google 検索 円をベジエ曲線で近似する

Diagramsを使って円周率をモンテカルロ法で計算する

Using queries Diagramsのqueryを使うと、点が図形の内部にあるか外部にあるかが判別できる。 > {-# LANGUAGE NoMonomorphismRestriction #-} > > import System.Random > import Data.Monoid > import Control.Applicative > import Diagrams.Prelude > imp…

HaskellのDiagramsライブラリ

今日はDiagramsのことを知った。Diagrams - About diagrams DiagramsはHaskellで使えるベクターグラフィックス・ライブラリを生成するためのドメイン特化言語。ギャラリーを見ると、どんなことができるか少しだけ分かる。チュートリアルの最初の例。 {-# LAN…

Rust 0.4

以前もRustを取り上げた。(プログラミング言語 Rust - M59の記録) 先月(2012年10月15日)バージョン0.4がリリースされていたので、同じプログラムをもう一度書いてみる。 // for Rust 0.4 // Rust 0.1のuseはextern modに変更された // extern modはクレイト…

Ubuntu QuantalでPureData

PureDataをUbuntu 12.10 (Quantal Quetzal)で動かす。 JACKの導入 JACK Audio Connection Kit経由で音声を出力する。なぜか自分の環境ではjackd2が動かなかったので、jackd1を導入する。 sudo aptitude install jackd1 PulseAudioとの共存 Ubuntu標準のサウ…

クエリ・プログラミングというプログラミングパラダイムの話

僕の知らないパラダイム プログラミングパラダイムは考え方の型だ。多くのパラダイムが創り出されるにつれて、プログラミングの可能性が広がってきた。つまり、昔出来なかったこと、難しかったことが、ずっと簡単にできるようになってきた。出来ないことはも…

Go言語のコードをGDBでデバッグする

あらまし Go言語のコンパイラgcがUnix系向けに吐くバイナリはDWARFのデバッグ用データを含んでいるから、GNU Debuggerを使ってデバッグできる。 何も考えずgo buildを実行すると、勝手にDWARFのデータが入る。デバッグ用データを省きたいときは、オプション…

PythonからGStreamerを叩く

#!/usr/bin/python from __future__ import print_function import sys from gi.repository import GLib import pygst pygst.require("0.10") import gst class HelloGst: def __init__(self): self.loop = GLib.MainLoop(None, False) self.pipeline = gst.…

HaskellからGStreamerを叩く

-- Main.hs module Main where import qualified System.Glib.MainLoop as G import qualified Media.Streaming.GStreamer.Core as Gst maybeFail :: String -> Maybe a -> IO a maybeFail message = maybe (fail message) return busCall loop bus message …

信号処理言語 Faust

Ubuntuだとaptからインストールできる。 チュートリアルにあるプログラムを少し改変したもの。 // square.dsp A = hslider("Amplitude", 0.5, 0, 1, 0.1); d = hslider("Cyclic ratio", 0.5, 0, 1, 0.1); T = hslider("Period", 1, 0.1, 100.0, 0.1); N = 44…

音を鳴らす言語

備忘 Pure Data — PD Community Site Home // Overtone ChucK => Strongly-timed, On-the-fly Audio Programming Language Faust

Thyme 覚書

基本 2D物理シミュレーションソフト Phun 及び Algodoo に実装されているスクリプト言語 設定ファイルやシーンファイルの中身もThyme 関数がファーストクラスオブジェクト 関数リテラル (x) => { f(x) ; g(x) } 関数の最後の式の値が返り値になる 関数は引数…