NativeCall つらい

GLib とか Gtk を NativeCall で呼び出そうとしてるんだけど、つらい。 C 言語でやるような typedef はどーやんの? GLib とかでこーいう感じの gsize は: typedef unsinged long gsize; Perl6 では以下のように constant る。 constant gsize = uint32; 構…

Perl6 の正規表現は不思議なんじゃなくて、自由だった

ここ を見て Perl6 のコードに移植するっていうのをやっていた。 Perl6 の正規表現が不思議すぎるなーと思って書いていたんだけど、よく読んだら自由だったらしい。 function isNumber (x) { if ( typeof x === 'number' ) return true; if ( /^0x[0-9a-f]+$…

GMake サバイバルガイド 便利そうな関数編

make は前回の記事で十分使えるようになったんじゃないかと思います*1。 私も険しいまけふぁいるの坂を駆け上がっている途中なので、ここで紹介できる関数は 2 つしかないのですが、 ええい、たらーん!!! という方もおられると思います。 そのような方はG…

GMake サバイバルガイド

この GMake サバイバルガイドでは、まけふぁいる*1をささっと書いて楽をしたいけど、 どーやって書くのかわからないといった様な人たちに向けてこんな感じに書けば良いんじゃないかなーというのを書いていると思います。 あと、この記事のまけふぁいるのサン…

LiveScript でつまずいたこと

関数呼び出し中の do hoge-func ham, tomato, beacon do a: \foo b: \bar が: hogeFunc( ham, tomato, beacon, { a: 'foo', b: 'bar' } ); になって欲しいのだが、時々こういう風になる: hogeFunc( ham, tomato, beacon({ a: 'foo', b: 'bar' }) ); うん、be…

あけおめ!

ʕ•͡ω•ʔ あけおめ

あんまり怖くないと思いたい null

多くの開発者にとって、null は忌避すべきものだ。 万が一、null に*さわってしまった*ら、あなたは突如発生した例外により、ヨルダン辺りまで吹き飛ばされるだろう。 あと、えーっと、オフィスの天井も失くなってしまう。 null の影響で行方不明になった…

ファイルのサイズを取得するには?

Strongtalk のソースコードを読んでいたところ、このような記述を見つけた: void Bootstrap::openFile() { stream_ = fopen( file_name_, "rb" ); if ( stream_ == NULL ) { has_error_ = true; lprintf( "\nCould not open file (%s) for reading!\n", file…

うどんこビリーでうどんなお正月!!

╰( ´◔ ω ◔ `)╯ やっぱり C++ も面白いな

カレー・ブルストの作り方

www.adventar.org ボイルしたソーセージ(ブルストとも呼ばれる。なるべく太いものが望ましい)を食べやすい大きさに切る。 ケチャップを親の敵のようにかける。 死ぬほどカレー粉をまぶす。 ╰( ´◔ ω ◔ `)╯ Windows でも Perl6 が使えるように rakudo を clone…

雨に唄えばおじさんと揚げ玉ビーチ

www.adventar.org ╰( ´◔ ω ◔ `)╯ またまた Swiff の話だ ╰( ´◔ ω ◔ `)╯ 多分な 換気扇の空、オリーブオイルの海、揚げ玉の海岸。 雨に唄えばおじさんは自分が厄介な場所に来てしまったことを悟った。 ということで、以下のコードはコンパイルエラーになる(は…

カーネルおじさんによる美味しくできるニワトリ料理パターン

www.adventar.org ╰( ´◔ ω ◔ `)╯ 毎回記事本体じゃなくて、ナンセンス釣りタイトルを考えるのに時間を費やしてる気がしなくもない 今朝は Swiff の型について考えたような気がする。 自分の中では Swiff も Uva も文法的なところが違うだけのようになってき…

アメリカ縦断! おにぎりスタンプラリーぶらり旅

www.adventar.org 7 日目。 ╰( ´◔ ω ◔ `)╯ ネタがないな (๑´ڡ`๑) ポケモン楽しい

Uva をはじめようかなー

www.adventar.org エントリーポイント Uva は決まったエントリーポイントを持たない言語です。 例えば、クラスの外においては Java は一切の文あるいは式(クラス・インターフェイス定義、import 文、package 文を除く)を書くことが許されていませんが、 Uva …

James VM のこと

Uva Advent Calendar 2016、 5 日目。 ʕ•͡ω•ʔ 今日は JS の Promise のことを調べてた。 James VM は Uva 用の VM です。 正確には、Uva 用の VM になる予定です。 Uva コンパイラ uvac でコンパイルすると、Uva ソースコードは基本的には James VM 用のバイ…

Linux なデスクトップ環境でおすすめの 10 のアプリ

Uva Advent Calendar 4 日目。 今日は Linux なデスクトップ環境でおすすめのアプリを紹介していきたいと思います。 10 つ全部 Emacs や Vim になったりした 10 things を見たって? 大丈夫。今回は Emacs や Vim 以外のアプリを紹介するから。 Banshee Bans…

紳士的振る舞いを紳士 Spec でテストする

╰( ´◔ ω ◔ `)╯ Argu を使ったテストをしようと思って、NUnit でやってみたら、FSharp.Core の 4.3.0 が必要みたいなんだ ʕ•͡ω•ʔ Argu が FSharp.Core 4.3.0 に依存しているのかな? ╰( ´◔ ω ◔ `)╯ テスト用プロジェクトは 4.4.0 でやってるから、4.3.0 に落…

さあ、Uva を始めよう

Uva Advent Calendar 2 日目。 今日は Rosetta Code の題材を使ってほにゃららら*1。 配列の宣言 100 の要素を持つ bool 型の配列、doors を用意します。 variable はこの変数が可変だという意味を持つアノテーションです。 variable を付けない場合、変数は…

Uva Advent Calendar 一日目

Uva Advent Calendar 1 日目。 今日は 1 日目ということで、Uva じゃないことを書こうかと思います。 ある日、dotnet-cli をインストールしようと思ったんですが、/ がパンパンでビルド中にあぼーんしてしまいます。 これはいかん! と思って、そんなに必要…

Guile では call-with-input-file の proc 内でエラーが起きるとポートが閉じられない件

問題 あんまり問題とは言えないかもしれないが、 (proc port) 内でエラーが起きた場合、ポートを閉じる手続きが呼ばれない。 助けてドラえもん!! とはいえ、プログラムが終了する時に全てのポートは自動的に閉じられるとかどこかに書いてあった気がするの…

バックトレースとか、スタックフレームのこと

さて、現在のスタック・トレースを得るには make-stack 関数を呼び出します。 引数の #t を忘れないようにしてください: (define a-stack (make-stack #t)) a-stack の型をとりあえず <stack> としましょう。 <stack> オブジェクトの中には <frame> オブジェクトが幾つか含まれて</frame></stack></stack>…

1 の脳内で動くと思われる Uva

Uva

オレオレ言語の Uva 熱が続いているので Uva のことについて書く。 Uva って何? Uva は Ceylon をベースにしています。 Ceylon は結構良い構文だし、Uva*1 は Ceylon のサブセットらしいので、そんな感じの名前にしました。 多分、色々と Ceylon と違うくな…

uim が起動しない件

半角全角キーを押しても、全角入力モード?に切り替わらない。 不思議だなーと思って % ps ax | grep uim-xim と打ってみると、見つからなかった。 .xsession にはこのように書いたんだけど: # -*- mode: shell-script; coding: utf-8; -*- export GTK_IM_MO…

Steam が動くようになった件

ただし、以下のコマンドで、だけど。 % STEAM_RUNTIME=0 steam STEAM_RUNTIME=0 は Steam 側のライブラリ*1じゃなくて、/usr/lib のライブラリを使うというスイッチだよ。 あと、cef_extentions.pak はどうしてもどうやって取得すればいいのかわからなかった…

最近よく使ってるコマンド

そのいち これかなぁ: % find -name '*.zip' -exec unzip -O cp932 {} \; 元の unzip がそうなのかはよくわからないけれど、unzip-iconv では unzip <ファイル名> -O cp932 ってやると、-O cp932 が無効なオプションだよって言われるのでとっても悲しい。 そ…

また Steam が動かなくなった件

カテゴリに Arch_Linux って書いてあるけど、私が使っているのは Antergos なんだ。 とにかく、steam を実行するとこんなメッセージが出る: % steam /home/rihine/.local/share/Steam/steam.sh: 行 154: VERSION_ID: 未割り当ての変数です /home/rihine/.loc…

なぜこの書き方がいいの?

LiveScript では、普通の文字列の別の書き方として \hoge というのができる。 SliderService.add-column account.serv, account.name, type, params, (ok, msg) !-> if ok console.log 'create column done.' respond { result: \ok, content: { column: msg…

めっちゃシンプルな更新監視型ビルドツールが欲しい

Hotot3 の core/scripts は CoffeeScript で書かれているので、LiveScript で書き直したりするようなことをしていた。 じゃっばすくりぷよにコンパイルする時に lsc に --watch 付けてやってたんだけど、コンパイルに失敗するとわけ不明なエラーを吐いて落ち…

Socket.IO やってみた

const Http = require( 'http' ); const Express = require( 'express' ); const Socket_IO = require( 'socket.io' ); const app = Express(); const server = Http.createServer( app ); const io = Socket_IO( server ); const port = 3000; app.get( '/'…

ファイルの順番の話

こーいう F# のソースファイルがありますよね。 Batteries.Env モジュールと: // env.fs module Batteries open System module Env = let at (index : int) = let argv = Environment.GetCommandLineArgs() argv.[index] let get = at それを参照する main.f…

Argu すごい

Argu は F# 製のコマンドラインパーサーだよ。 gmake のオプションを前半だけ書いてみた。 type Arguments = | [<AltCommandLine("-B")>] Always_Make | [<AltCommandLine("-C")>] Directory of dir : string | Debug of mode : DebugMode option | [<AltCommandLine("-e")>] Environment_Overrides | Eval of expr : string | [<AltCommandLine("-f")></altcommandline("-f")></altcommandline("-e")></altcommandline("-c")></altcommandline("-b")>…

printfn とかで出力する時に

最近までこんな風にやってたんだけど: let name = user.GetName() // printfn "Hello, %s!" user.GetName() はエラーになっちゃうので // 一旦、変数に束縛する。 printfn "Hello, %s!" name 別にそんなことをする必要はなかったらしい。 <| を使うんだルー…

よく考えると coke とか joke とかいい名前があるじゃまいか

よさげなビルドツールを作ることはよさげな開発人生に一条のいい感じの光を投げかける的ななんかアレなわけです。 以下の C 言語なソースコードをビルドすることを考えてみましょう: // main.c #include <stdio.h> int main() { printf( "Hello, World!\n" ); return </stdio.h>…

RequestPolicy じゃなくて RequestPolicy Continued にしたら捗った

いままで、RequestPolicy を愛用していたんだけど、全然更新されていないのに気がついたので、RequestPolicy Continued に切り替えた。 (๑´ڡ`๑) めっちゃ使いやすい

class が export キーワードで export できなくてちょっと悲しかった

node のバージョンはこんな感じ: % node --version v6.3.1 wasp を書いてたら、 // ↓ class は書けるのに、export ができない!!!>< /* export */ class Emitter { constructor() { this.events = []; } on(name, cb) { this.events = ( this.events || …

ビルドツール Wasp とかどうかな

Fly を見ていたらこういう風に書けたって良いんじゃないかなと思った: const gcc = require( 'wasp-gcc' ); const paths = { scripts: [ 'src/**/*.c' ], dist: 'obj' }; export default function () { this.ready( 'build' ); } export function compile() …

Nemerle やってみた

インストール yaourt でインストールできる: % yaourt -S nemerle へろーわーるど using System; Console.WriteLine( "Hello, World!" ); このファイルを hello.n とすると、ncc を使ってこんな風にコンパイルできる: % ncc ./hello.n -o hello.exe 関数 関…

ちょっと休憩

というか、めちゃくちゃ進んでしまったので、書くのめんどくさい。 % nuget install FParsec -SolutionDirectory . とやることで、./packages/ に FParsec がインストールされることがわかった。

FParsec のチュートリアル的な何か

さて、今日は FParsec 日本語チュートリアルを読んでやってみるよ。 nuget はインストールしてるかな? 私は nuget3 をインストールしてみたよ: % yaourt -S nuget3 勉強用のディレクトリを作成しよう: % mkdir ./hello-fparsec % cd ./hello-fparsec FParse…

OCaml の Test::Simple を目コピしてみた その 4

OCaml のソースコードに沿って TAPDocument.ml を test-document.fs にして、TAPBuilder.ml を test-builder.fs に書いてみた。 なんかクラスっぽいやつでやってみたんだけど、これでいいのかな…………(汗 module Test.Builder type Plan(?count : int) = let c…

OCaml の Test::Simple を目コピしてみた その 3

続き。 ʕ•͡ω•ʔ TAPDocument.ml 完全目コピでけたー! init_document はなんか初期化しそう。 let init_document doc = let count = count_tests doc in let failures = count_test_failures doc in match doc with | Document(PlanNode(plan)::nodes) -> Doc…

OCaml の Test::Simple を目コピしてみた その 2

続き。 OCaml では文字列の結合は ^ だけど*1、F# では + だ。 また、OCaml での string_of_int は F# には存在しないけど、書くとしたらこんな感じになる: let string_of_int (n:int):string = n.ToString() DiagnosticNode を返す関数 2 連発: let create_…

OCaml の Test::Simple を目コピしてみた

これ。 普通に OCaml のコードがコンパイルできるのすごい。 モジュール名は Test.Builder にしておく。 module Test.Builder type status = | NotOk | Ok type directive = | Todo of string type diagnostic = | Diag of string list type node = | TestCa…

F# で Either もできたよー

ʕ•͡ω•ʔ 最近 fsharp-mode より tuareg-mode のがいいんじゃないかって思うようになってきた module Data.Either type either<'a, 'b> = | Left of 'a | Right of 'b let either f g e = match e with | Left a -> f a | Right b -> g b let isLeft x = match…

F# で Maybe できたよーーー

ʕ•͡ω•ʔ Haskell の何かを F# で書くと楽しいんじゃ(天才博士風) というわけで、実装して覚えるシリーズ。 型の定義がこちら: type Maybe<'a> = | Nothing | Just of 'a F# 風にするなら、Maybe を maybe にするべきかも。 ゆかいな Maybe 関連の関数: let ma…

FSharp やってみた2

その 2。 add という関数を定義して、引数を渡して評価してみる: > let add x y = - x + y;; val add : x:int -> y:int -> int > add 2 2;; val it : int = 4 関数のボディ部分を折ってるけど、インデントしないと Warning が出るので注意。 あと、終了する…

FSharp やってみた

良い感じのブラウザだと Try F# で式を評価できるらしいんだけど、できないブラウザだったので、処理系をインストールして式を評価してみるよ。 インストール yaourt で fsharp をインストールできるよ。 % yaourt -S fsharp REPL 起動 REPL を起動する時は …

フォントを Roboto にした

タイトル下 前やったときは記事上とかにしてたんだけど、これだと複数になっちゃうかも?って思ってタイトルの下に書いた。 <link href='https://fonts.googleapis.com/css?family=Roboto' rel='stylesheet' type='text/css'> <link href='https://fonts.googleapis.com/css?family=Roboto+Mono' rel='stylesheet' type='text/css'> デザイン CSS 常日頃から…</link></link>

後日談

結論から言うと、VSCode では C# なプロジェクトを作れないのだ。ということがわかった。 ASP.NET なのしかサポートしてないので、やりたいなら Visual Studio コミュニティーエディションをインストールしろということらしい*1 実のところ、このような: - t…

VSCode を yaourt でいんすとろーるしてみた。

まだ良くわかっていない*1。 ビルドタスクは以下のような .vscode/tasks.json に書くらしい。 { // See http://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "0.1.0", "command": "dotnet", "i…