読者です 読者をやめる 読者になる 読者になる

辞書になく、ググっても出ない言葉: 単話

「単話」という言葉は辞書になく*1、ググっても出ない*2。しかし、実際使われている。「単話」は、電子コミックやドラマなどの販売形態を表すのに使われる言葉で、1話単位で販売すること、また販売された作品のことだ。曲で言えばシングル、単曲に相当する。…

「Haskellでの合成可能なオブジェクトの構成とその応用」評

Haskellでの合成可能なオブジェクトの構成とその応用では、オブジェクトをメッセージをアクションに写すものとして捉え、構成している。この構成方法では、アクションを対象、オブジェクトを射とする*1圏ができ、継承やメソッド・オーバーライドといった操作…

内包記法についての考察

発端 @tenapyon f(A) = {f(x)|x∈A}, f(B) = {f(x)|x∈B} としたら f(A)∩f(B) = {f(x)|x∈Aかつx∈B} = {f(x)|x∈A∩B} = f(A∩B) というのは誤りでしょうか。— 結城浩 (@hyuki) January 6, 2015 https://twitter.com/kagami_hr/status/552436576576602113 https://…

An Emoji Talk: Person bowing deeply with fearful face and plewds 🙇

This emoji is officially “Person Bowing Deeply.” There are four blue triangles above the head in the emoji of Apple Color Emoji. What are they?Apple Color Emoji is based on SoftBank’s animated emoji. Here is the emoji 「土下座 dogeza」: Lo…

An Emoji Talk: Green Cross means safety 👷

Do you know why this worker wears a healmet with a green cross? Is this EMT emoji? No, the emoji is named “construction worker.” So, what does the green cross mean?The origin of the green cross is: Flag of safety, designed by Toshifumi Gam…

こわくない CPL (0) CPLの導入

圏論プログラミング言語 CPL - M59のブログでは、CPLの紹介と、データ型についての考察をしました。ここでは、理屈抜きでCPLで遊ぶための記事を書きます。CPLで実際にプログラムが書けるようになるのが目的です。 CPLのインストール CPLには、Haskellによる…

圏論プログラミング言語 CPL

Hagino’s Categorical Programming Language について紹介します。wikipedia:CPL (圏論プログラミング言語)によれば、 CPL (正式名称:Categorical Programming Language) は圏論に基づいたデータ型の定義と計算モデルを持つ関数型プログラミング言語であり…

定義するということ、そして読者の信念について。付録: 「関数は呼び出されるまで評価されない、というのは当然の性質だ」の検証

私はこのように言いました。 このように、遅延評価の意味合いは広がっていってしまう可能性があります。言葉を使う前に、いちいち自分の言う「遅延評価」とはこういう意味なんだぞ、と言っておかないと危ないと思います。 http://qiita.com/mandel59/items/8…

RustでFizzBuzz

まだ前回から半月しか経っていないけど、taskがなくなったり、channelが変わったりした。 rustc 0.13.0-dev (a6b109723 2015-01-03 01:10:40 +0000)fn main() { use std::thread::Thread; use std::sync::mpsc::channel; use std::borrow::IntoCow; let n = …

W3Cの文書を読もう

ツイッターでは前にも書いたけど、W3Cの文書は面白いのでみんな読んだほうがいいですよ。 カレー CSS Fonts Module Level 3 自然 Use Cases & Exploratory Approaches for Ruby Markupなんか他にも面白いのあったら教えて

Go, Rust, Haxeによる正規表現エンジン実装の読み比べ

この記事はRust Language Advent Calendar 2014の20日目であると同時に、Haxe Advent Calendar 2014の20日目でもあります。 正規表現エンジン 正規表現エンジンのGoによる実装sre2、Rustによる実装libregex、そしてはHaxeによる実装HxREを読み比べます。sre2…

RustでFizzBuzz

何回目なのか分からない 前回 Rust 0.10でFizzBuzz - M59のブログ Rust 0.10でFizzBuzz - M59のブログ 使ったバージョン rustc 0.13.0-dev (b497f0500 2014-12-16 01:32:33 +0000) コード fn main() { let n = 100u; let (tx, rx) = channel(); for i in ran…

Tao3Dでインタラクティブな3Dアニメーションをつくろう (1) 使い方の基本

Tao3Dは、インタラクティブなスライドやアニメーションが作成できるプログラミング言語および開発プラットフォーム。Windows版, OS X版, Linux版のパッケージが用意されている。Tao3D Libre EditionはGPLv3でライセンスされている*1。Tao3Dを起動すると、Wel…

こわくない Idris (6) 補足

こわくない Idris (6) - M59のブログ こわくない Idris (6) - M59のブログ 1年前に書いた記事を読み返していたら、証明がすぐには理解できなかった。証明の内容を言葉で分かるように書いておきたいと思う。次のコードのMyHead.headは、全域函数だ。 %default…

メモ

Postel's law Natural Language Principles in Perl Programming By Contract HTML Meta programming

Source Han Sans の入手方法について

2014年9月12日追記: Source Han Sans バージョン 1.001がGitHubで公開されました。ここに書いてある内容は過去の内容です。にわかに話題となった、汎CJKフォントであるSource Han Sans(日本語名:源ノ角ゴシック)ですけれども、入手方法が分かりづらいと思…

書き難き我が意を得たるプログラム

を読んで、思ったことを書く。「プログラムは思った通りに動かない。書いた通りに動く。」いったい誰が言ったのかは分からないこの箴言だが、ただ当たり前のことを言っただけでは箴言にはならなくて、ここには意外性がある。つまり、この箴言に出会う前の人…

価値

価値とは何なのか。一般的な通念から言えば、価値が等しい物は、互いに交換ができるものだといえるだろう。交換可能といっても、それは状況によって変わるはずだ。豚に真珠猫に小判と言うが、猫にとって小判の価値はそこらの石ころと変わらないかもしれない…

帰責性

最近知った固有名という概念に何か釈然としない物を感じているので、固有名を検索したところ、こんな記事が出てきた。 固有名 - ised@glocom 読んでみると、固有名と帰責性なる概念とを結びつける、なかなか怪しげなことが書いてある。どういう意味だかよく…

C++にdo記法入れる話

本の虫: 2014-05-pre-Rapperswil mailingのレビュー N4015でHaskellのdo記法風っぽいdo式を入れる提案があるわけなのだけれども、そもそも手続き型の記法でプログラミングができるC++の上にさらにモナドを使って手続き型風記法でプログラミングするためのdo…

論理の話

「原発は絶対安全なのか?」とゼロリスクを求めた結果、架空の安全神話を原発に生みだしてしまった構造と似てるなあと思いますよ。非論理的な極論は、議論を成立させない。結果として強行突破や架空のゼロリスク論を生み出してしまう。 https://twitter.com/…

𫙹(魚嵐; ブリザード)

魚と嵐でブリザード? - M59の記録で取り上げたブリザードが出てくる書籍『漢字と遊ぶ 現代漢字考現学』を入手した。11ページには「𫙹」が活字で出てくる。𫙹が活字で出てくる箇所 「この「𩹢」にしても、前に紹介した暴走族のグループ名「𫙹」(ブリザード…

酷い翻訳

javac 1.8.0_05を使っていたところ、意味不明なwarningが出た。 Test3a.java:9: 警告: [unchecked] raw型Listのメンバーとしてのadd(E)への無検査呼出しです ln.add(10); ^ Eが型変数の場合: インタフェース Listで宣言されているEはObjectを拡張します原文…

HaxeでUnicode文字列をどう取り扱うか

Haxeには複数のターゲットがあり、文字列のAPIは共通だが、それぞれで文字列の内部表現が異なっている。普通にプログラムを書いても、ターゲットによって結果が変わってくる。 class Main { public static function main() { var s = "\u{20000}𩸽あëa"; tra…

Idris JavaScript FFI

IdrisからJavaScriptのAPIを叩いてみる。 module Main getElementById : String -> IO Ptr getElementById s = mkForeign (FFun "document.getElementById(%0)" [FString] FPtr) s setInnerHTML : String -> Ptr -> IO String setInnerHTML s e = mkForeign …

小瑠璃フォント生成用スクリプト書いた

小瑠璃フォント生成用スクリプト書きました。 参考にしたツイート ちなみに小瑠璃フォントの生成手順は簡単に言うと ・FontForgeを使いOpen Sansに含まれるグリフをM+ 1pから手作業で探しだして消す ・EMの大きさを2048に設定する ・Open Sansを統合する ・…

RustにおけるOptionの最適化

ネタ元: performance - What is the overhead of Rust's Option type? - Stack OverflowRustにはnull値がなく、代わりにOptionを使う。このOptionは、ポインタ型に対しては最適化されるそうだ。確認してみる。(rustc 0.10を使った。) use std::mem::size_of;…

将棋はゼロサムゲームか?

メタゲームについて思いついたことのメモ。たぶんおんなじようなことを考えたことがある人はすでにいっぱいいると思う。僕はよく知らないので、知っていたら教えて欲しい。現実のゲームというものは、ある思惑の下で執り行われている。たとえば勝てば賞金が…

Rustのランタイムライブラリー

現状Rustにはランタイムライブラリーが2つ実装されていて、ネイティブスレッドを使うlibnativeとグリーンスレッドを使うlibgreenがある。詳細はA Guide to the Rust Runtimeにある。実際にそれぞれのランタイムライブラリーを使ったFizzBuzzを作って試してみ…

Apple絵文字は間違ってる?

Apple絵文字の問題 iPhone 3Gが絵文字に対応したのが2008年11月、Unicodeに絵文字(Emoticons)が入ったのが2010年10月でした。それから時がたって2014年、今では世界中で絵文字が使われています。英語圏で「ホットドッグの絵文字がない!」「黒人がいないのは…

Rust 0.10でFizzBuzz

毎度おなじみFizzBuzzでRustの変更点を確認しよう。 fn main() { let (tx, rx) = channel::<(int, std::str::MaybeOwned<'static>)>(); for i in range(0, 100) { let tx = tx.clone(); spawn(proc() { let i = i + 1; let b = match (i % 3, i % 5) { (0, 0…

RustのSendStr

RustにはEnum std::send_str::SendStrがあって、これは送信可能な文字列型である~strか&'static strのどちらかを保持する。Trait std::send_str::IntoSendStrのメソッド fn into_send_str(self) -> SendStr を使って、それらをSendStrに変換できる。例のFizz…

プログラミング言語の語順

自然言語を主語(S)・目的語(O)・動詞(V)の語順で分類するように、プログラミング言語もオブジェクト(O)・実引数(A)・メソッド(M)の語順で分類できる。(Smalltalk, C++など)よくある語順オブジェクト指向言語風の語順はOMA型だ。一方で、(GObject/C, CLOS/…

Rust 0.9

例のごとくFizzBuzz // for Rust 0.9 fn main() { let (port, chan) = SharedChan::new(); for i in range(0, 100) { let chan = chan.clone(); do spawn { let i = i + 1; let b = match (i % 3, i % 5) { (0, 0) => ~"FizzBuzz", (0, _) => ~"Fizz", (_, 0…

M+ OUTLINE FONTS グリフの合成について

グリフを正しい位置で合成するためにはアンカーポイントの設定が必要です。 CVSにアンカーポイントに対応するためのスクリプトをコミットしました。 アンカーポイントについては、fontforgeに説明があります。 http://fontforge.sourceforge.net/ja/overview…

プログラミング言語 Shiba (仮称)

こんなプログラミング言語を考えている。Shiba fact: { @ if ( = 0 ) :x { 1 } { * :x fact ( - 1 ) :x } x: } fact 10 even: { @ if ( = 0 ) :x { true } { odd ( - 1 ) :x } x: } odd: { @ if ( = 0 ) :x { false } { even ( - 1 ) :x } x: } even 42 even…

静的型付けスタックベース関数型プログラミング言語 Kitten

マイナー言語 Advent Calendar 2013 のネタにしました。 Kittenでスタックと戯れる - Qiita [キータ]Kittenって子猫って意味なんだけど、それ以前にCatって言語があったみたいだ。concatenateのcatなのかな。

【闇 Advent Calendar 2013 12日目の記事です。】夜の闇は、子供だった私にとって大切な時間だった。現実から逃れ、孤独のなか、重たい頭で空想に耽るのだ。夜を死の時間と仮定してみる。人は夜ごとに死ぬのだ。夜の死んだ私は昼の生きた私から離脱し、宇宙…

Haxeのバグ

https://github.com/mandel59/hxcpp/commit/703b0f7129edc72fdead9ff9f034f42cc2ba1ec9 - return ((c & 0x0F) << 18) | ((c2 & 0x7F) << 12) | ((c3 << 6) & 0x7F) | ((*ioPtr++) & 0x7F); + return ((c & 0x0F) << 18) | ((c2 & 0x7F) << 12) | ((c3 & 0x7F…

RedHatからやってきたAltJava/AltJS言語 Ceylon

Ceylon 1.0.0がリリースされました。 米Red Hat、新言語「Ceylon 1.0」発表、初のプロダクションリリースに | SourceForge.JP MagazineRedHadがCeylonって言語を作っていることはどこかで読んで知っていました。でも、JVMをターゲットにした言語だし、ウェブ…

GoとRustの比較

こういうバージョンの処理系で試した。 $ go version go version go1.1.2 linux/amd64 $ rustc --version rustc 0.9-pre (825b127 2013-11-12 18:56:13 -0800) host: x86_64-unknown-linux-gnu// Go package main import ( "fmt" "sort" "strconv" ) type T …

Luaと協調するマルチステージ言語 Terra (3)

C言語後方互換性 TerraはClangの機能を使って、C言語との後方互換性を実現しているので、C言語から使えるライブラリならTerraからも使うことができる。 試しにTcl/TkをTerraから使ってみる。 libtcl = "libtcl8.5.so.0" libtk = "libtk8.5.so.0" includepath…

バイト、クビになった。

こんなことをブロクに書いたりしたら、自分の信用を落とすのではないかと不安になる。でも書く。もとから、大した信用なんてないのだから。バイト、クビになった。シフトの連絡がメールで入っていたのに、見落としていた。連絡来ないなと思いながらも、こち…

Luaと協調するマルチステージ言語 Terra (2)

実行時コンパイル LuaからTerraの関数を呼べるし、TerraからLuaの関数を呼べる。 -- hello2.t stdio = terralib.includec("stdio.h") function hello_lua() print("Hello from Lua!") end terra hello_terra() stdio.printf("Hello from Terra!\n") end terr…

Luaと協調するマルチステージ言語 Terra (1)

今年5月ごろに公開されて、Twitterではちょっとは流れてきたのだけれども、日本語の情報が全然流れないままのTerraという言語があって、ちょっと気が向いたのでもう一度調べてみることにした。Terra どんな言語なのか 説明によれば、TerraはLuaと同時に使え…

Ubuntu 13.10 IBus 1.5による文字入力の面倒な問題

散々話題になっていたので、Ubuntuを13.10にアップグレードした。結論から言えば、仕様がヤバい。キーボード配列の切り替え、IMの切り替え両方ともSuper + Spaceなんだけど、例えばこれでロシア語表音配列に切り替えてキリル文字を入力する。そしてMozcに戻…

Cとモナド

Go言語でEitherモナドは無理がありすぎる感じがした。では、他の言語ではどうだろうか? C言語では関数の戻り値でエラーかどうかを判定しなければならないことが多いわけですけど、&&演算子の短絡評価を使えば、簡潔にこのように簡潔に書くことさえ可能だ。 #…

Goとモナド

Goとerror monads - moriyoshiの日記ちょっとそれをモナドって呼んだらHaskellerやってきますよ? (太宰メソッド) こういうふうにやらないとモナドを使ったとは認めません。 package main import ( "log" "os" ) type right struct { val interface{} } typ…

OSC2013 Tokyo/Fall 参加しました

オープンソースカンファレンスに参加してきました。 日野遠い。筑波より遠い。 ウイーン (☝ ՞ਊ ՞)☝ 帰ってきたOSASK計画のブース見れてよかった 色々もらいました ちょっと大きすぎてリュックにも入らんね URL2013-10-19 13:11:33 via ShootingStar FlashAir…

依存型の表現力と逆問題

Idrisみたいに、函数プログラミングを前提にしている言語には函数を合成する演算が標準で用意されているよね。 (.) : (b -> c) -> (a -> b) -> a -> cこの演算子を使うと、函数を合成してくれる。函数の合成を使えば、プログラムを変数を使わないで書くこと…