すでに数週間経っているが、去年の10月に始めた「週刊 代数的実数を作る」を、一通り書き終えた。 続きを読む
投稿者「mod_poppo」のアーカイブ
PureScript から TypeScript 用型定義 (.d.ts) を生成するツールを作った
前置き
TypeScript で作っていたプロジェクトに、後付けで PureScript を追加しようとしたらかなり辛かった。
(わざわざ言語を混在させたい理由としては、型クラスや演算子オーバーロードを使いたい&既存のコードを全部書き直す暇はない、が挙げられる)
辛い理由としてはそもそもモジュールとバンドラーの周辺がまだ成熟していないというのもあるだろうが、 TypeScript 固有の理由として、 TypeScript コードから PureScript モジュールを読み込むための型定義が足りないという問題がある。
Stack Overflow を見ると、同じことで悩んでいる人がいた:
しかし、どの解決策もイマイチである。
コンパイル済みの PureScript を使うだけなら --allowJs
オプションという手もあるだろうが、せっかく型がある言語で書いたのだから、適切な型チェックがされて欲しい。PureScript のコンパイル時に TypeScript 用の型定義ファイル .d.ts
を出力させるようにはできないのか?
PureScript の GitHub Issues にも「.d.ts を生成させたい!」というトピックがあるが、特に動きがあるようには見えない。
コンパイラーにそういう機能がないならば、自分で作ってしまおう!ということで、作った。
Haskell でのデバッグ手法あれこれ
プログラムにバグはつきものです。強力な型システムを備えている Haskell でもそれは同じです。この記事では、 Haskell プログラムのデバッグ手法をいくつか挙げてみます。
なお、使用している GHC は 8.2.2 です。より新しいバージョンで追加されるであろうより便利な機能は、この記事の対象外です。
PureScript 雑感
PureScript は、 Haskell ライクな altJS である。「Haskell ライク」という評判に劣らず、 Haskell の最も重要な特徴である型クラスをきちんと受け継いでいる。
現在のバージョンは 0.11.7 である。したがってまだ安定しているとは言えない。バージョン 1.0 まで解決されるべき Issues はこれだけある。 続きを読む
OpenGL の投影行列
OpenGL での 3DCG で使われる投影行列について、自分用にメモっておく。
情報源:
- https://www.khronos.org/opengl/
- https://www.khronos.org/registry/OpenGL/index_gl.php
- OpenGL Core Profile, Compatibility Profile, GLU など
- OpenGL 2.1 Reference Pages
- https://www.khronos.org/registry/OpenGL/index_gl.php
- GLM (OpenGL Mathematics)
「週刊 代数的実数を作る」中間報告
この記事は 数学とコンピュータ Advent Calendar 2017 の14日目の記事です。
以前このブログでも告知しましたが、2ヶ月前から、「週刊 代数的実数を作る」と題して、代数的数の計算機上での実装について Web 上で連載しています:
この記事では、「週刊 代数的実数を作る」でこれまで扱ったトピックを振り返り、これからの方向性を述べます。この記事を読む前に連載に目を通している必要はなく、この記事で概要を把握してから連載の方を読むのでも構いません。
(本当は代数的数の実装を利用して有理関数の部分分数分解と不定積分でもやってやろうと思っていたのですが、現状の実装が遅すぎるので断念しました。) 続きを読む
複素関数記述DSLについて
この記事は 言語実装 Advent Calendar 2017 7日目の記事です。
この記事では、私が作っているDSLの設計思想を主に書きます(実装が未完なので)。 続きを読む
LaTeX における行区切りの \\ とオプション引数
LaTeX においては、二重バックスラッシュ \\
コマンドで強制改行、または行列等の表記における行区切りを行う。その \\
コマンドには、いくつかの変種がある: 続きを読む
「週刊 代数的実数を作る」創刊
コンピューター上で実数を取り扱うには、いくつかの方向性がある。普通は浮動小数点数によって近似することが多いと思うが、多倍長計算を始めとする、「コストをかけてでも正確に」計算するという方向性もある。
そのような「正確に取り扱える」実数のクラスとしては、整数(多倍長整数)や有理数はある程度普及していると思う(標準で備えているプログラミング言語がある)。それよりも広いクラスとして、代数的実数、つまり(整数または有理数係数)代数方程式の根となるような実数全体、というものがある。
代数的実数が計算機で取り扱えるということ自体は割と知られた事実だと思うが、実装は割と大変で、工夫の余地がある。有理数のように「GCD さえ実装すればよい」というものではない。
かくいう私も最近までその辺を真面目に勉強しようとは思っていなかったわけだが、何となくモチベーションが湧いてきたので、代数的実数に関するアルゴリズムを勉強しつつまとめたものを記事として Web 公開してみようかと思った次第である。
実装には筆者の好みで、 Haskell を使う。実際のところ、 Haskell による代数的実数の実装は既にあるようだが、まあ気にしない(自身の勉強が主目的なので)。
というわけで、以下のページで公開している:
https://miz-ar.info/math/algebraic-real/
「週刊」と名乗っているが、毎週末に更新することを目指している。果たしていつまで続くかは不明である。 続きを読む
![](https://blog.miz-ar.info/wp-content/uploads/2017/09/IMG_8382-1-e1504594832880-624x212.jpg)
八ヶ岳登山
登山は、人生と同じく、始まりと終わりのある物語である。
普段はこのブログには学術的、技術的なことを書くことが多いが、今回は趣向を変えて、登山について書くことにする(行ったのは8月)。
計画
山に、行きたい。今年に入ってからまだまともに登山していない。去年せっかく買った1人用テントが泣いている(このテントの元を取るには最低10泊以上使う必要がある計算であるが、この時点でまだ3泊しかしていない)。
まず、どこに行くか。北アルプス?今現在北アルプスで行きたいと思っているコースは3泊4日以上あって大変だし、先日富山の実家に帰省したばっかりなのにまた戻るのはだるい。南アルプス?南アルプスの主だった山は全て登頂済みだ。まだ登ったことのない山、まだ行ったことのない山域に行きたい。
八ヶ岳。八ヶ岳は、メジャーな山域な割に筆者はまだ行ったことがなく(!)、標高2800mを超える高山で、東京からのアクセスも割と良い。八ヶ岳に行こう。 続きを読む