というわけでおしらせです。
evalparkにSwiftが入園しました。
Unfortunately lang/#swift of @freebsd ports is currently broken. But the fix was relatively easy so I brewed a package/1
— Dan Kogai (@dankogai) March 19, 2017
portsにlang/swiftが壊れたまま放置されていたのですが、これを手で修正しつつpkg化して入園しました。手元のFreeBSD:11:amd64
な箱にも入園させたい人は、以下の要領で行けます。
# pkg install -A e2fsprogs-libuuid icu libedit libxml2 perl5 sqlite3 # fetch https://eval.dan.co.jp/friends/packages/All/swift-2.2.1_4.txz # pkg add ./swift-2.2.1_4.txz
バージョンも2.2.1と1世代前で、linkerが未完成でswiftc
が動かないとはいえ、swift
コマンドはスクリプトとしてもREPLとしてもきちんと使えてます。書いて覚えるSwift入門のコードサンプルはほとそのまま行けました。
#!/usr/local/bin/swift
func recall<T,R>(f:((T->R),T)->R)->T->R {
var r:(T->R)!
r = { n in f(r,n) }
return r
}
let fact = recall { $1 <= 1 ? 1 : $1 * $0($1-1) }
for i in (0...20) {
print(fact(i))
}
とはいえあくまで公式pkgが配布されるまでの野良pkgですものおおめにみててくださいませ。
Dan the Park Ranger Thereof
追記2017.04.29 Swiftを3.1に上げました。上のrecall
のコードは以下の通り書き換えないと動きません。
#!/usr/local/bin/swift
func recall<T,R>(_ f:@escaping (((T)->R),T)->R)->(T)->R {
var r:((T)->R)!
r = { n in f(r,n) }
return r
}
let fact = recall { $1 <= 1 ? 1 : $1 * $0($1-1) }
for i in (0...20) {
print(fact(i))
}
このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。