2001-01-01から1年間の記事一覧

APL/J言語:”:(くオートコロン、フォーマット)

数字のテーブルはフォーマットすると見やすくなります。 ]t=:(i.4 5)%3 0 0.333333 0.666667 1 1.33333 1.66667 2 2.33333 2.66667 3 3.33333 3.66667 4 4.33333 4.66667 5 5.33333 5.66667 6 6.33333 ]f=: 6j2 ": t 0.00 0.33 0.67 1.00 1.33 1.67 2.00 2.3…

APL/J言語:読み書き

知っている言語に翻訳したり、知っている言語から新しい言語に翻訳したりするのは初歩にはとてもよい練習になります。以下に例を示します。書かれていることを見ずにJ言語の作用を自分の言語で簡潔に定義してみましょう。その際、積極的にコンピュータのディ…

APL/J言語:パワー(繰り返し)とインバース(逆関数)

^:(キャレットコロン、パワー、繰り返し)接続詞の機能は^(キャレット、べき乗)関数と似ていると言えます。左側の動詞を右側の引数回数繰り返します。 ]a=: 10^ b=: i.5 1 10 100 1000 10000 b 0 1 2 3 4 %:a 1 3.16228 10 31.6228 100 %: %: a 1 1.77828 3.1…

APL/J言語:ハウスキーピング(身の回りの整理)

長いセッションの場合動詞や名詞にアサインした名前を覚えるのが難しくなる場合があります。外部接続詞!:(エクスクラメーションマークコロン)を使って名前を表示したり消去したりできます。 b=: 3* a=: i. 6 sum=: +/ tri=: sum\ a names=: 4!:1 names 0 +-+…

APL/J言語:ボキャブラリー

単語のリストを覚えるのは効率的な言語の学び方ではありません。よりよい方法を使うべきです。 A)あなたに話させてくれるネイティブスピーカーと会話する。 B)その言語で書かれていて読んでおもしろいものを読む。 C)辞書の使い方と文法を学び、先生なしで独…

APL/J言語:@(アトマーク、アトップ接続詞)

接続詞の@(アトマーク、アトップ接続詞)は二つの動詞からひとつの動詞を作りますが、ひとつ目を実行してからふたつ目を実行するのと同じ結果になります。次の例を見て下さい。 TriplePowersOf2=: (3&*)@(2&^) TriplePowersOf2 0 1 2 3 4 3 6 12 24 48 CubeOf…

APL/J言語:&(アンド、ボンド接続詞)

ボンド接続詞(コンジャンクション) ^(キャレット、べき乗)のような二項動詞を使うと一連の単項動詞の機能を提供できます。 ]b=: i.7 0 1 2 3 4 5 6 b^2 NB.二乗 0 1 4 9 16 25 36 b^3 NB.3乗 0 1 8 27 64 125 216 b^0.5 NB.二乗根 0 1 1.41421 1.73205 2 2.2…

APL/J言語:プログラム

演奏会で渡されるプログラムは演奏される曲目の名称や解説です。語源的にはgramとproから成っていて、プログラムとはそこに書かれていることが起きる以前に書かれるもののことです。 その意味で、前章で述べたフォークの+/ % #は実際に文として(+/%#)bという…

APL/J言語:フォーク

前章で述べたように、3つの動詞がひとつながり(sequence)となって前後から独立している場合をフォーク(fork)と呼び、単項動詞の場合と二項動詞の場合、下記のように定義できる。 g g / \ / \ f h f h / \ / \ y y x y x y 図は、視覚的なイメージである。 以…

APL/J言語:句読点(パンクチュエーション)

英語では、文やフレーズをどの順序で解釈するかを示すために句読点が用いられます。 The teacher said he was stupid. The teacher, said he, was stupid. 数学は主にかっこを用いて解釈の順序を示し、実行順序と呼ばれます。かっこだけでなく、関数(演算子)…

APL/J言語:動詞と副詞

Jディクショナリー第3章の翻訳です。 前章での%aでは%(パーセント、わる)がaに作用して結果を出していました。これは英語で動詞が名詞や代名詞に作用するというのと類似しています。これまで数学用語の関数という言い方をしてきましたが、今後は関数というだ…

APL/J言語:トランスポーズ

J言語では配列やテーブルを自由自在に扱えます。テーブルのたてよこを入れ替える動詞に|:(たてぼうコロン、パイプコロン、トランスポーズ)があります。 (] ; |:) i.3 4 +---------+------+ |0 1 2 3|0 4 8| |4 5 6 7|1 5 9| |8 9 10 11|2 6 10| | |3 7 11| +…

APL/J言語:動詞のランク

動詞のランクは動詞が引数にどう作用するかを決定する。ランクkの単項動詞は引数のk-cellに作用する。左側ランクがklで右側ランクがkrの二項動詞は左側引数のkl-cellと右側引数のkr-cellに作用する。動詞のランクは配列を扱う動詞の振る舞いを制御する強力な…

APL/J言語:k-cell

k-cellという言い方がJ言語にあって、ランクkのセルをk-cellと呼ぶ、とJプライマーに書いてある。0-cellはアトム、1-cellはリスト、2-cellはテーブル、というぐあい。名詞のセルのランクが与えられれば、フレームは名詞のシェイプのそれ以外のものを指す、と…

APL/J言語:nub(重複を取り除く)

APL/J言語:nub(重複を取り除く) ほかの言語だとuniqと同じようなJ言語の動詞に~.(チルダドット、ナブ)というのがあります。nubは英和辞典で引くと要旨とか要点とかいう意味のようです。考えてみればuniqを重複を取り除く、という意味に使うのも無理な話でど…

APL/J言語:共役(conjugate)

J言語で+(プラス)を単項動詞として使うと引数の共役(きょうやく、conjugate)を返します。 複素数yは共役を掛けるとyの絶対値の二乗になります。 ]y=:3j4 NB.複素数 3j4 |y NB.絶対値 5 y * +y NB.yとyの共役を掛ける 25 +y 3j_4 3j4 * +3j4 25 3j4 * 3j_4 25…

複素共役

以下はWikipediaからの引用です。=== 複素共役(共役複素数) === が実数 ⇔ が純虚数 ⇔ (対合) 特に 。 特に、複素数 が実数係数の多項式 の根となるならば の共役複素数 も の根となることがわかる(1746年:ジャン・ル・ロン・ダランベール|ダランベール)…

APL/J言語:単項動詞vs.二項動詞

J言語では同じ記号が単項動詞として使われるときと、二項動詞として使われるときと意味が違います。単行動詞とは動詞(関数)の右側だけに引数がある場合で、二項動詞は動詞(関数)の左右に引数がある場合です。 このことをAPL/J言語用語でアンビバレンスと呼ぶ…

APL/J言語:ニーモニック

ニーモニックってなんだか懐かしい響きがあるな。昔機械語やアセンブラのことをニーモニックって言ってなかったっけ? APL/J言語もあのころの理論を引きずっているのかもしれません。 Jディクショナリーでは英語圏の人のようにはいかないよね。 75 NB.大なり…

ベーシックとしての用途

b.(ビードット)のベーシックとしての用途は、u b. yとした場合、yが_1ならばuのオブバースの表示(線形表示になります)、yが0ならば0 0 0というようなuのランクを示します。yが1ならばアイデンティティ関数の表示を行います。 ^ b. _1 ^. ^ b. 0 0 0 0 ^ b. 1…

ブール型

ブール型としては、単項動詞として使った場合、左側の引数がゼロの場合と同等。つまり、 m b. y ↔ 0 m b.y となる。二項動詞の場合: 二項動詞fを、d=:0 1について、d f/ d(または f/~ d)とすると、すべての場合についてを示す2x2のテーブルが作成される。or…

APL/J言語:b.(ビードット、ブール型、ベーシック)

b.(ビードット)はブール型の用途と、ベーシックの用途の二通りがあります。

APL/J言語:b.(ビードット、ベーシック)

Jボキャブラリーのb.(ビードット、ベーシック)のところを読みます。(翻訳) u b. yはyが_1(マイナスいち)ならば、uのオブバースの線形表現、yが0ならば動詞uのランク,yが1ならばuの固有関数の線形表現。 (翻訳終り)例によってわかりません。例をみます。 ^ b.…

APL/J言語:オブバース(obverse)その2

Jボキャブラリーの:.(コロンドット、オブバース)のところを読みます。(翻訳) u :. vの結果がuでありかつオブバースをとるとvである、というように使う。接続詞&.(アンドドット、アンパーサンドドット)および^:(キャレットコロン、繰返し)においてはインバー…

APL/J言語:オブバース(obverse)その1

オブバースというのがあってたぶん逆関数のことで、たとえば自乗の逆関数はルート(自乗根)、掛け算の逆関数は割り算とか思うのですが、Jディクショナリーはもう少しややこしい言い方をしている。わたしの言う意味の逆関数はインバースであり、オブバースはそ…

APL/J言語:J言語の特徴

Jディクショナリー(Roger K. W. Hui, Kenneth E. Iverson) のイントロにJ言語の特徴として7項目挙げてあります。わたしはまだ勉強始めたばかりですが、この7項目に非常に納得が行ったので、書き留めておきます。 1.原始関数(primitives)は1文字か2文字から…

APL/J言語:&(アンパーサンド、アンド記号)

&(アンパーサンド、アンド記号)が動詞と動詞にある場合の用法について。J言語のボキャブラリーのコンポーズというところを読み進みます。 u&v yはu v yと同値。したがって、+:&- 7は_14になる。さらに、u&vはu@vと同じである。 これはわかりやすい。つぎ。 x…

フィボナッチ数列

Wikipediaによるとフィボナッチ数列は と定義されています。これは再帰(リカーシブ)による定義で、rubyだとそのまま、 def fib(n) if n と表記できますが、あまりJ言語向きの課題ではないのではないでしょうか。そんな気がします。 しかし、Eazy Jの第7章は…

APL/J言語:ベース変換

Easy Jの第6章は「可能性を調べる」という表題で、まず課題が述べられます。 「仮に、ふた通りの選択がありうる状況とする。それぞれについて、なにかが受け入れられるか拒絶されなければならない。たとえばオニオンをいれる(またはオニオン抜き)、チーズ、…

APL/J言語:ボックス

Easy Jは少し変な本ですが、いろいろ面白いです。 今回は第5章の「ボックスとレコード」についてです。 fname=.'Harry' sname=.'Potter' fpubl=.1998 shelfcode=.'childrens' (テーブルについて、ボックスにして並べると横にならぶ。 m=.i.3 4 ( domain erro…