総括2016

色々

  • 言語クラスタに取り入ろうとした
  • 數アカウント纏めて@qiru_0に移行した

完了

  • 自サイト作成
    • 今は殆ど使ってない
  • 文字制作 (2つ)
    • フォントは未制作

未完了

  • 人間言語制作
    • やりたい案は3つ程 (ongoingは1つ)
    • 優先度低め

2017予定

  • 2016未完了事項を完了する
  • 繪描きを眞面に再開する
  • Pythonで畫像處理、音聲處理
    • ヺイスチェンジャとかやりたい
  • web app開發のれんしうをする
  • コンパイラ言語どれか1つ勉強
  • 独検受ける (最低4級, できれば3級取る)
  • 種々の性感帯開發

(只2017は私事でかなり忙しくなりそうなので頑張りを要する)

後、

  • 友人を得る
    • 喫緊

総括

中身が薄かった年、2016.
只、多くの尊敬できる人と知り合ったのは好かった*1.

2017も宜しくね

*1:jboのちからってすげー!

相ぢゃない

xekri.hatenablog.jp

コメントを受けて, ↑の訂正.

訂正

記事内での主旨は"dundaに相付けても一體何に注目しての相なのか解らんよね"でした. なので各役割に注目した相を語りました.

いやいや.
"dundaに關はる役割一連に關する相"ですやん?

と云ふ訣で, 先の疑問は不適だったと言はざるを得ませんね. .o'anaisai.
當該記事内で, dunda_2の相として述べたものが正にdundaの相ですね.

得た知見, あるいは適切な言ひ直し

ある事態superとその役割としての事態subに注目するとき, subにはsuperとその相が一致するものとしないものとが有る.

それ以上役割群に分割できない原子役割なんてものも考へたが, 巧く纏まらなかった.

相ですね

相[aspect]についてです.

言語に興味を持った契機がjboで未だにjboの構造への感動が失はれてないので, 人間言語*1を自作するときも述語から項を引き出す感じになることが多かったのですが, これだと相が私に扱ひかねると最近感じてゐます.

例示

{dunda} "x1 gives x2 to x3"*2で考へます.
これに相を明示して命題を作ると, 例へば{ko'a ko'e ko'i ba'o dunda} "甲が乙に丙を與へおへた"になります.
一體何が終はったのでせう.

{ko'a ba'o dunda}の場合

{ko'i te dunda}

どうなってるか全く判りません. {pu'o}かも知れないし, {ca'o}かも知れない.

{ko'e se dunda}

直感的に

  • {ko'a xo'u dunda} XNOR {ko'e xo'u se dunda}
  • {ko'i mo'u te dunda} XNOR {ko'e mo'u se dunda}

と思ひます. なれば少なくとも{co'a}以降であると言へそうです.

{ko'i ba'o te dunda}の場合

{ko'a dunda}

我々の"与えられる前に受けることはできない"なる常識によって{ba'o}と思はれます. そこに統語論的判斷は有りません.

{ko'e se dunda}

上述の理由から, こちらも{ba'o}でせう.

自作言語への案

斯樣に, jboの"1述語から多數の項を引き出す"ことを可能にする"複數の事象を1つの事象に纏める"行ひは, 相に關して話をややこしくします.
{dunda}の中には既にx1からx3へ向かふ時間の流れが生まれてゐます. x2の相はx1, x3のそれに依存してゐます.
個人的には, "give1, give2, give3なる個別の單項述語についてそれらの關係giveが與へられる"みたいな構造が好いかなと思ひます.

以上です.*3

*1:"人工言語"だと機械言語のことと誤解されることが最近多いのでかう呼んでます.

*2:簡略化して書いてます. 公式辭書とは違ひます.

*3:qiruはjboに詳しくないので, 全體としてとんちきなことを言ってるかも知れません. 鵜呑みにしないでください.

pipe ope .iu

F#にはpipe forward演算子とpipe backward演算子とが有ります (知らなければググってください). これが他の言語にも有られたい.
Nemerleには前者だけ有ります.
Pythonには兩方有りません. 手ずから定義しようと思っても新たしい演算子定義はできません.

痛し痒し.

Python書いてると, 基本的に処理順と記載順とが逆になる*1所爲で思考が妨げられるんですよね(Rubyでさう云ふことは無い).
なので, 處理を左から右に流れるやうに書けることを許すpipe opeが欲しくて欲しくて死にそう. 死にました.

僕は只, 手續き型と函數型のハイブリドで, OOPできて, indent-based syntaxで, pipe forward/backward opeの有る言語で氣持ち好くなりたいだけなのに……
自分で作るしか無いんですかね*2.

ユーザ中置演算子が定義できる言語, 誰か敎へてください*3.

*1:fをxに適用することをf(x)と書くことにしたのは人類の失敗

*2:處理系自作に最近興味が有る

*3:幾らでも有りそう. 自分で探せ.

Nemerleが好さそう

今日知った機械言語Nemerleが好い感じ (Wikipedia).
C#のお仲間だけど, 細かなシンタクスとか, 漂ふ函數型の匂ひが私に好ましい.
メタプログラミンの機能が超豐富らしい(てかそれが一番の特徴)けど, 私は"メタプロ mo"状態なので今は觸りません.

取り敢へず書いた

はろわ

基本

System.Console.WriteLine("Helllo world!");

それっぽく

using System.Console;

module HelloWorld{
    Main() :void{
        WriteLine("Hello world!");
    }
}

インデント中心のシンタクスも

#pragma indent

using System.Console

module HelloWorld
    Main() :void
        WriteLine("Hello world!")

これが滅っ茶嬉しい

部分適用とかパイプライン演算とか

#pragma indent

def sum(a, b)
    a + b // "return"は不要

def succ = sum(_, 1) // 値を渡さない引き數はアンダスコアに

0 |> succ |> System.Console.WriteLine // 1

いつもの

フィボナチ數列 (with パターンマッチ)

def fib(_ :int) :int
    | 0 => 0
    | 1 => 1
    | n => fib(n - 2) + fib(n - 1)

10 |> fib |> System.Console.WriteLine // 55

fizz buzz

def fizzBuzz(n :int) :void
    for (mutable i = 0; i < n; i++)
        match ((i%3, i%5))
            | (0, 0) => "FizzBuzz" |> WriteLine
            | (0, _) => "Fizz" |> WriteLine
            | (_, 0) => "Buzz" |> WriteLine
            | _ => i |> WriteLine

20 |> fizzBuzz

(これに關しては未だ巧い書き方が有りそう)

感想

()と{;}が嫌ひな私としては, かなり好みです(シンタクスしか見てない).
後はドキュメントが多ければね(C#やれ).