2018-04-01から1ヶ月間の記事一覧

emacsで正規表現で置換する場合に入力する値のメモ

emacsで正規表現で置換する場合のメモ。ついついescapeなどの対応関係を忘れてしまうので。 例 int(xxx)をxxxに変換する M-x replace-stringでminibufferで入力する場合 int(\([^)]+\)) -> \1 ちなみに文字列で渡す場合には全部にescapeが要る。 (replace-re…

goでは自分自身を返すメソッドは定義しないほうが良いのでは?という話。

最近色々コードを書いていた中で、goでは自分自身を返すメソッドは定義しないほうが良いのでは?という思いを抱くことがあった。自分自身を抱えすメソッドを定義するということを一般に悪いとする主義主張の人もいたりもするけれど。そこまで強硬に主張した…

gomvpkg-lightというパッケージを作った

github.com 作りました。 発端 gomvpkg-lightみたいなものを作りたい理由は2つあって。1つ目が遅い。2つ目が常にpackageの指定が再帰的に扱われるのがちょっと困るという感じ。— po (@podhmo) 2018年4月6日 まとめると もう少し速さが欲しい packageを再…

go言語でASTの解析にgo/typesの機能を使うことの威力について

goはASTの解析が手軽なのが便利。ところでこれにgo/typesの機能を使うととても便利になる。その威力を一番わかりやすく体験できそうな例を思いついたので紹介する。 (実際にはgo/typesの機能の使いかたはこれいがいにも色々ある) go/types? go/typesとい…

go言語でローカルで定義した関数で再帰する話

go言語でローカルで定義した関数で再帰したいと思うことありますよね。ちょっと横着してクロージャに環境をキャプチャすることを任せてしまってそのコンテキストで木などを再帰的に辿りたいみたいな場合などに。 そんなわけでgoでもローカルで定義した関数上…

コード生成用のツールに欲しいもの3 機能をバラバラに使いたい

はじめに (個人的なコード生成のための環境を作っている。まだ完成には程遠いので実際のチュートリアルなどは作らない) コード生成用のツールに欲しいものを思いつくままにあげていく。 機能をバラバラに使いたい 1,2ではあると便利なものをそのままあげたの…

コード生成用のツールに欲しいもの2 パッケージの情報の利用

はじめに (個人的なコード生成のための環境を作っている。まだ完成には程遠いので実際のチュートリアルなどは作らない) コード生成用のツールに欲しいものを思いつくままにあげていく。 パッケージの情報の利用 goの標準ライブラリににgo/typesという素晴ら…

コード生成用のツールに欲しいもの1 出力先の指定

はじめに (個人的なコード生成のための環境を作っている。まだ完成には程遠いので実際のチュートリアルなどは作らない) コード生成用のツールに欲しいものを思いつくままにあげていく。 出力先の指定 コード生成で欲しいのは出力先を指定できることかもしれ…

handwritingでfizzbuzz

(handwritingは自作のパッケージ。まだwip。todo どこかで説明) 昔にpythonで書いた貧者のfizzbuzzを作ってみる。 貧者のfizzbuzzとは(悪い意味で)まじめな人が書いたfizzbuzzのこと。(全ての条件分岐と出力処理を手書きする) code package main import ( …