無線部開発班は、コンテスト自動集計システムを手掛ける、東京大学アマチュア無線クラブのソフトウェア開発部門です。
((f)=>((x)=>f(x(x)))((x)=>f(x(x))))((f)=>(n)=>(n==0)?1:n*f(n-1))(10)
package main
func init() {
OnLaunchEvent = onLaunchEvent
}
func onLaunchEvent() {
HandleButton("MainForm.CWPlayButton", onButton)
HandleEditor("MainForm.CallsignEdit", onEditor)
}
func onButton(num int) {
DisplayToast("click CWPlayButton")
}
func onEditor(key int) {
DisplayToast(Query("QSO with $B"))
}
<?xml version="1.0" encoding="UTF-8"?>
<list xmlns:qxsl="qxsl.org">
<item qxsl:time="2017-06-03T16:17:00Z" qxsl:call="QV1DOK" qxsl:band="14000" qxsl:mode="CW">
<rcvd qxsl:rstq="599" qxsl:code="120103"/>
<sent qxsl:rstq="599" qxsl:code="100110"/>
</item>
<item qxsl:time="2017-06-04T00:01:00Z" qxsl:call="QD1QXB" qxsl:band="21000" qxsl:mode="CW">
<rcvd qxsl:rstq="599" qxsl:code="110117"/>
<sent qxsl:rstq="599" qxsl:code="100110"/>
</item>
</list>
Amateur-Radio Logging Library QxSL
汎用的なドメイン特化言語であらゆる書式の交信記録の処理とコンテストの得点計算に対応します。
API ElvaLISP allja1.lisp; scoring
(defmacro result (score mults names)
`(block
(setq mults (length (quote ,mults)))
(setq names (length (quote ,names)))
(ceiling (/ (* ,score mults) names))))
class AdaDelta(r: Double = 0.95, e: Double = 1e-8) extends SGD {
var eW, eE = 0.0
def apply(dE: Double) = {
lazy val v = math.sqrt(eW + e) / math.sqrt(eE + e)
this.eE = r * eE + (1 - r) * math.pow(1 * dE, 2.0)
this.eW = r * eW + (1 - r) * math.pow(v * dE, 2.0)
this.w -= v * dE
}
}
int dmm_dawn(int i1, int i2, int j1, int j2, int k1, int k2, int grain) {
auto axes = [i2 - i1, j2 - j1, k2 - k1];
if(axes.maxElement <= grain) {
dmm_leaf(i1, i2, j1, j2, k1, k2);
} else if(axes.maxIndex == 0) {
auto t1 = sched.fork!dmm_dawn(i1, (i1+i2)/2, j1, j2, k1, k2, grain);
auto t2 = sched.fork!dmm_dawn((i1+i2)/2, i2, j1, j2, k1, k2, grain);
sched.join(t1);
sched.join(t2);
} else if(axes.maxIndex == 1) {
auto t1 = sched.fork!dmm_dawn(i1, i2, j1, (j1+j2)/2, k1, k2, grain);
auto t2 = sched.fork!dmm_dawn(i1, i2, (j1+j2)/2, j2, k1, k2, grain);
sched.join(t1);
sched.join(t2);
} else if(axes.maxIndex == 2) {
auto t1 = sched.fork!dmm_dawn(i1, i2, j1, j2, k1, (k1+k2)/2, grain);
auto t2 = sched.fork!dmm_dawn(i1, i2, j1, j2, (k1+k2)/2, k2, grain);
sched.join(t1);
sched.join(t2);
}
return 0;
}
Type Inference & Garabage Collection
プログラミング言語処理系の自作で不可欠な型推論とガベージコレクションを手作りする予定です。