c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Cosense で公表中です。

Programming は GitHub で開發中です。

関数 の検索結果:

結局 grep が便利

LSP (language server protocol) server での定義 jump は便利ですね。IDE は便利です。でも部分的にしか program を理解できなかったり、そもそも LSP は壊れたりします、おま環 (死語) ではありますが…。 結局 grep だとか ag が便利です。結局 print debug が便利なのに似てゐるかもしれません。 普段 Scala と TypeScript を書いてゐるので、その識別子の定義を探す ag wrapper で…

tacit programming : Point-free, Concatenatives & J

…昔書いた事が有る。 関数合成型 ( Forth 系) 言語 Factor への入り口 - c4se 記:さっちゃんですよ ☆ Factor で階乗。然して再帰に就いて抄 - c4se 記:さっちゃんですよ ☆ Unix の pipe & filter も仲間だ。Unix pipe & filter は一次元だが、連鎖性 programming 言語はこれを多次元化してゐる事に成る。 同じく combinatory 論理を基にしたが J 言語は連鎖性 programming 言…

思想は如何にして可能か 前Ⅰ

…く説明は、人間精神の関数的な性質や、物理の論理的性質に還元してみるやり方だ。だがこれは、像域の中をスライドさせていっているにすぎない。われわれは不満だわたしたちは論理の計算はなぜ「正し」く思えるのか、という問題に集中してみる。この問題は、わたしたちはなぜ絶対の確実性の像をもちうるのかという問いと同じものだ論理計算の確かさを問うとき、わたしたちは確かに思考するのに何故推論してよいのか問うことにもなる記号列から記号列への定義と定理をつかった推論は、フラットな含意の記号列に置き換え…

Subversionのlogメッセージを検索する svn-grep

…れてゐない。 以下の関数を .bashrc に書く。 function svn-grep() { TMP_ID=$(uuid -v4) cat << RUBY > /tmp/$TMP_ID require 'nokogiri' log = Nokogiri::XML STDIN.read logentries = log.css('logentry').select{|logentry| logentry.css('msg').first.content.include?(A…

Unicode舊字をAndroidで表示する為に、Notoフォントの部分フォントを作りWebフォントにする

…コードポイントを得る関数は、以下のものである。 cf. PHPのordはASCII文字にしか対応してゐない。Unicode版を書く http://c4se.hatenablog.com/entry/2015/05/03/035347ここから以下のFontForgeスクリプトが生成される。 #!/usr/bin/env fontforge Open('../../src/fonts/NotoSansCJKjp-Regular.otf') # CIDChangeSubFont('…

PHPのordはASCII文字にしか対応してゐない。Unicode版を書く

…解決法はある。mb_関数が使へれば簡単だ。 <?php function uOrd($char) { return unpack('N', mb_convert_encoding($char, 'UCS-4BE', 'UTF-8'))[1]; } var_dump(uOrd('學')); 文字をUTF-8符号から、Unicodeのコードポイントを直接表した符号に変換する。それをバイト列として見て、コードポイント数値を抜き出す。 cf. javascript - UTF-8 S…

Elixirで分散じゃんけんをシミュレートする

…たもので、プロセスの関数を含むモジュールとrecordのモジュールは別にしなければならなかった。Ruby人間としてstructは助かる。 spawnしてPersonを五人作る。PersonのプロセスIDが得られるので、これで話しかけられる。 さて、五人に手を出してもらう。そして五人が何の手を出したか確認せねばならない。おお。五人全員の手が揃わなければならないのだ。四人で勝ちを決めても五人目の手で引き分けになるかもしれない、當たり前だ。すなはち五人全員が手を出し終はるのを待たね…

ES6を使ふ。今直ぐ

…r-ofやarrow関数式や、等、目ぼしいものには対応してゐる。 cf. https://github.com/google/traceur-compiler/wiki/LanguageFeatures これをGulpを使ったワークフローに組み込んでみる。 Gulpでtraceur-compilerを使ふ gulp-traceurを使ふ。 var gulp = require('gulp'), traceur = require('gulp-traceur'); gulp.t…

麻井シキの最近の詩について

…なのだ 言葉は現実の関数ではありえても現実の写像ではない そこでわたしは人間精神がまだ実現していない孤独の直接性への先端としてのみ詩をゆる そうとおもう 世界からの拒絶という妄想だけがわたしを癒してくれるような孤独を拒絶する思考の先端 としてのみ詩をゆるそうとおもう 2015-03-14 麻井シキ 囁き(うたかた)♪:[詩] 詩は既知のことを言うのだとおもわれている cf. 囁き(うたかた)♪:詩 http://blog.livedoor.jp/lotus_gate/arch…

コメントでJavaScriptに型注釈を書き実行時に自動で型検査をする

…す (結論)。函數[関数]のtoStringで関数のソースコードが實行時に讀め[読メ]ますので、これを使うてmacroを書くことができます (事實[事実])。故に (略)。以前にAngularJSのやうなinjectionの雑な實裝をやったことがありました。 cf. JavaScriptで引数名から自動でDIする http://c4se.hatenablog.com/entry/2014/03/29/074201 コメントを型アノテーションの代はりにする ところでこのtoSt…

Rubyで作ったFactorっぽい連鎖性記法が間違ってゐたので直した

…tenative (関数合成) 記法を作るが完璧に間違へてゐたので直した。実際は此れは関数合成に成ってゐない。ループして順に評価してゐるだけだ。此れはconcatenativeではない。Factorでは全てのwordはいちおう、暗黙のstackを受け取り暗黙のstackを返す関数である。ところが前記事には、いろいろ引数をとり値をちゃんと返す関数と、stack効果関数とが混在してゐる。記法の方便としてではなく、本質的に混在してゐる。それがあの醜さだ。 ちゃんと全てstack効果…

Ruby自体をMaybe関手と見做して、ActiveSupportのtryを実装する

…Rubyの対象とし、関数 (method) を圏Rubyの射とする。次のやうなclass ModNumberを定義すると、 class ModNumber def.self fmap f ->(*nums){ self.class.new f.call(*nums.map(&:to_i)) } end def initialize n; @n = n; end def to_i; @n % 10; end end twice = ->(n){ n * 2 } p twice.…

RubyにてMaybe関手を使って、ActiveSupportのtryを実装する

…するにはfmap (Functor) で充分だと解る。tryは単一の関数しか扱はず、関数合成を考へる必要が無いからだ。Maybeな関数合成を扱ふ場合にはMonadが必要に成る。若しかするとApplicativeで充分かもしれないが。 cf. 「関数型Ruby」という病(5) - Object#tryはMaybeモナドの夢を見るか? - ( ꒪⌓꒪) ゆるよろ日記 http://yuroyoro.hatenablog.com/entry/2012/10/24/213757続く。

RubyでFactorっぽい連鎖性 concatenative (関数合成) 記法を作る

…でcurry化しない関数合成のcompose関数をみてゐたら、Factorに見えてきて、作れさうに思ふた。 再帰で階乗を定義できる所迄作る。 # coding=utf-8 # license: Public Domain class Factor def initialize *words @definitions = {} @stack = [] call *words end def call *words while words.length > 0 word = wo…

n人目の所業だがRubyでMaybe monad (Option monad) を作った

…でcurry化しない関数合成 http://c4se.hatenablog.com/entry/2014/07/27/140057 def compose *fs; proc{|*args| fs.inject(args){|args, f| f.call *args } }; end class Maybe include Comparable include Enumerable # <$> # @param [Proc<s,t>] f # @param [Maybe<s…

Rubyでcurry化しない関数合成

…けれど。 Rubyの関数合成で調べれば延々と結果が出てくるので私のcodeを信用しないやうに。 cf. 「関数型Ruby」という病(2) - 関数合成 Proc#compose - ( ꒪⌓꒪) ゆるよろ日記 http://yuroyoro.hatenablog.com/entry/2012/08/09/203959 cf. 「関数型Ruby」という病(3) - カリー化(Proc#curry, Proc#flip) - ( ꒪⌓꒪) ゆるよろ日記 http://yuroyo…

vimproc で command の非同期実行を待ち callback してもらう

…llback() で返り値を蓄積しつつ、command が終ったか否かを確認します。終ってゐたら、autocmd を解除し、渡されてゐた callback 関数を実行します。 vimproc に setImmediate か requestAnimationFrame みたいなのを実装した方が好いのかもしれない。ヰ゛ムッcf. Vim-users.jp - Hack #124: Vimで非同期実行を行う http://vim-users.jp/2010/02/hack124/

PhantomJSで簡単に非同期のtestを行ふ

…の終了を通知する為の関数が得られる。全てが終わった時に此れを呼んでやれば好い。done() の引数はError若しくはnull/undefinedだ。 // Gruntfile.js module.exports = function(grunt) { grunt.initConfig({pkg : 'package.json'}); // 同期task grunt.registerTask('sync-task', function () { thisIsASyncCall…

JavaScriptで引数名から自動でDIする

… ] [ { '0': 't', '1': 'h' }, 2, 'yu', 22 ] [ { '0': 't', '1': 'h' }, 2, 'yu', 22 ] [ { '0': 't', '1': 'h' }, 2, 'yu', 22 ] [ { '0': 't', '1': 'h' }, 2, 'yu', 22 ] 因みに関数のthisを変えたくないときは、Function.prototype.bind() でthisを固定しておく。bind()は再bind出来ない。

JavaScriptで「普通に」継承する

…from()は以下の関数とする。ES6に入ってる筈だけど。 if (!Array.from) { // ES6 Array.from = function (obj) { return [].slice.call(obj); }; } _extends()の実装を示す。 // License: Public Domain /** * @param {function(Object...):Object} _super * @param {function(Object...)…

Vim で、文字数をstatuslineやlightline.vimに表示する

…り。:h gを参照。関数を作ってやる。 cf. ファイル内の文字数のカウント - サイト更新停滞ちうっ http://d.hatena.ne.jp/taku-o/20080420/1208703880 cf. 文字数カウントスクリプト - 地獄の猫日記 http://d.hatena.ne.jp/nokturnalmortum/20080422/1208817273 cf. Vimで文字数カウントをステータスラインに表示する - ナレッジエース http://n.bluebl…

Factor で階乗。然して再帰に就いて抄

…て書いた。 cf. 関数合成型 ( Forth 系) 言語 Factor への入り口 http://c4se.hatenablog.com/entry/2013/12/26/044415 幾つか間違ってゐる。例へば変数はstaticなものもdynamicなものも使へた。兎も角、 再帰 recursion 兎も角、id:itochan 再起関数が面白そう。 と思うのは、「5」は「5をstackへpushする関数」って書いてて、合成関数「5 *」でそのpushをはしょってるから(…

関数合成型 ( Forth 系) 言語 Factor への入り口

…は (ほぼ) 全てが関数なのですけれども、暗黙の引数として暗黙のstackをとり其所に副作用を加えていくのが、OOPと重ねて興味深く思ってゐます。 cf. 他言語から見た Elixir (macro, protocol, binary構文) http://c4se.hatenablog.com/entry/2013/12/14/231359 Lispと並んでAST (abstract syntax tree, 抽象構文木) が丸見えです。と云ふかForth系に、「構文解析」な…

PHP でRay.DiとRay.Aopをやってみる

…Pの仕様 (特に標準関数) ですが、最近はだいぶんPHPの闇も晴れてきました。しかしPHP教育の闇は相変わらずです。 PSR (Proposing a Standards Recommendation)は闇を晴らす光です。PSRの無いPHPを教えるな。Composer http://getcomposer.org https://packagist.org で依存関係の管理や適用が随分楽に成りました。PSR-0 (Autoloading Standard) と PSR-4 (…

他言語から見た Elixir (macro, protocol, binary構文)

…同等のものは無いが、関数定義に於けるpattern matchは一種の多態性 (多相性) だから、Rubyやjsは構文的に多態の一部を諦めてゐることになる。JavaやC#はmethodの多重定義ができる訳だ。そこでHaxeの構造的部分型 (structual subtyping) 等も見るに、pattern matchは型systemの一部だと云ふ事が解る。Rubyやjsはduck typingだからpatter matchが無いのではなく、専用の構文が無く、手動でやる事にな…

さっちゃんへのインタビューをどうぞ (編集中)

…くからです。 一つの関数やクラスが、大きくなりすぎるのは厳禁です。視界に収まるよう、分離して下さい。設計は、見直すためにあります。なければ見直して変更できないから設計するのだ、と思って下さい。 コメントは悪です。javadocの様な定型化されたもの以外は、無くてもコードを読めるようにできないか、考えなおして下さい。即ち、インターフェースをドキュメント化するのは必要ですが、内部動作のドキュメントは要らないべきです。当然、状況による妥協は必要ですが。 勉強してください。あなたより…

node.jsでCPUを使う重い処理のlibrary (child process使い) を1 fileで作る

….jsでは、重い計算関数は矢張り他の処理をblockする。なんたってsingle threadなので。node.jsで重い計算処理をnon-blockingでやるには、Child Process moduleを使う。child_process.fork(filepath)で、node.jsをもう一つ立ち上げ、messageをやり取りする事ができる。子のnode.js processが一生懸命計算してゐる間、親のnode.js processは、子からのmessage even…

自分のclassに、new Class().on('name', fn) みたいなEventEmitterを実装する (node.js)

…Emitterと云ふ関数だ。 cf. Node.js - Node書くならEventEmitterについて知っとくべし - Qiita [キータ] http://qiita.com/yuku_t/items/d69d3a2c7dafa7d04e87 cf. Events Node.js v0.10.20 Manual & Documentation http://nodejs.org/api/events.html#events_class_events_eventemitt…

deferred (延期) を自動で連鎖させる (node.js)

…る。callback関数をnestさせて頑張る。遅延評価のAPIに変換する。Deferred (Promise, Future) を使ふ。Flow.jsを使ふ。 cf. 最小限の非同期処理コントローラJavaScript http://c4se.hatenablog.com/entry/2013/06/14/195740 node.jsの次versionには、yieldが入るらしい。何年も前にFirefox, Rhinoに実装され、漸く最近ES6に入り、目出度くV8に実装され…

GD (libgd) を使いPHPで画像を生成する

…および Image 関数 - Manual http://www.php.net/manual/ja/ref.image.phprandomな四角を十個描く。 <?php // license: Public Domain $type = empty($_GET['type']) ? 'png' : $_GET['type']; $image = new ArtImage(600, 600); foreach(range(1, 10) as $i) $image->fillR…