プログラミング
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…
昨日の続き。 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…
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)"……でも内容はこれから色々変えるので、多分このままの形では残り…
Programming Language Egison プログラミング言語Egisonは、強力なパターンマッチ機能を持つという。とりあえず、同じような機能をLua上で使えるように、MoonScriptを使って実装してみた。 mandel59/egimoon · GitHub print show match_all {1, 2, 3}, (List…
周りで言語を考えたり処理系作ったりしている人がいると、自分でも作りたくなってきた。ここで、「僕の考えた最強の言語」の青写真を書こうと思う。 自然言語に学ぶ Perlのやったように、自然言語に学ぶことは多いと思うので、自然言語の持つ性質をいろいろ…
MoonScriptが気に入ったので、構文について色々書き散らしたいと思う。解説記事とか入門記事じゃないよ。文法知りたい人はリファレンス読みましょう。 (MoonScript v0.2.2 - Language Guide) MoonScriptとは Luaにコンパイルするスクリプト言語。現時点での…
GObjectIntrospection - GNOME Live! GObject Introspectionはスゴイヤツである。こいつがあれば、GObjectを使っているC言語のライブラリへのバインディングを自動的に生成してくれる。今までだったら、言語ごとで個別にバインディングを作成しないとダメな…
LÖVEでゲームを作ろう 3 簡単なUI - M59のブログ LÖVEでゲームを作ろう 4 クロージャー - M59のブログ 上の2つに次いで、3つ目のSuiの記事。今日はフォーカス機能を実装した。これがあれば、フォーカスのあるウィジェットだけ反応するようにもできる。前回書…
(簡単なUIとは使うのが簡単というより作りが簡単という意味) LÖVEで使えるGUIライブラリはCategory:Libraries - LOVEにいくつか載っているのだけれども、自分で簡単なGUIライブラリを作ってみることにした。 成果物: mandel59/lovesui · GitHub コードを抜…
Luaを使ったゲーム開発の利点は、コンパイルの必要がなく、コードを書き換えたらその場ですぐに試せることだ。 LÖVEでは、次のコードを使って、動的にLuaを読み込むことができる。 -- これはコードを読みこむだけで、まだ実行されない。 chunk = love.filesy…
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 検索 円をベジエ曲線で近似する
Using queries Diagramsのqueryを使うと、点が図形の内部にあるか外部にあるかが判別できる。 > {-# LANGUAGE NoMonomorphismRestriction #-} > > import System.Random > import Data.Monoid > import Control.Applicative > import Diagrams.Prelude > imp…
今日はDiagramsのことを知った。Diagrams - About diagrams DiagramsはHaskellで使えるベクターグラフィックス・ライブラリを生成するためのドメイン特化言語。ギャラリーを見ると、どんなことができるか少しだけ分かる。チュートリアルの最初の例。 {-# LAN…
以前もRustを取り上げた。(プログラミング言語 Rust - M59の記録) 先月(2012年10月15日)バージョン0.4がリリースされていたので、同じプログラムをもう一度書いてみる。 // for Rust 0.4 // Rust 0.1のuseはextern modに変更された // extern modはクレイト…
PureDataをUbuntu 12.10 (Quantal Quetzal)で動かす。 JACKの導入 JACK Audio Connection Kit経由で音声を出力する。なぜか自分の環境ではjackd2が動かなかったので、jackd1を導入する。 sudo aptitude install jackd1 PulseAudioとの共存 Ubuntu標準のサウ…
僕の知らないパラダイム プログラミングパラダイムは考え方の型だ。多くのパラダイムが創り出されるにつれて、プログラミングの可能性が広がってきた。つまり、昔出来なかったこと、難しかったことが、ずっと簡単にできるようになってきた。出来ないことはも…
あらまし Go言語のコンパイラgcがUnix系向けに吐くバイナリはDWARFのデバッグ用データを含んでいるから、GNU Debuggerを使ってデバッグできる。 何も考えずgo buildを実行すると、勝手にDWARFのデータが入る。デバッグ用データを省きたいときは、オプション…
#!/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.…
-- 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 …
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
基本 2D物理シミュレーションソフト Phun 及び Algodoo に実装されているスクリプト言語 設定ファイルやシーンファイルの中身もThyme 関数がファーストクラスオブジェクト 関数リテラル (x) => { f(x) ; g(x) } 関数の最後の式の値が返り値になる 関数は引数…