2015今月Swiftがオープンソースとして公開されました。何か試したかったのでC言語とのリンクをと思ったのですが、少し踏み込んでHaskellにしてみました。15.10Swiftインストール:https://swift.org/download/#latest-development-snapshotsからダウンロードした上記ファイルを解凍して、usr/binにパスを通します。usr/lib/swift/linuxにある、libswiftCore.soをLinuxの/usr/local/libにコピーします。簡単なテストをするだけなので、これだけにしました。https://wiki.haskell.org/Calling_Haskell_from_Cこのコードをそのまま使い、Swiftから呼び出してみます。\(fb)")hs_end()なんとダイレクトで呼び出せてしまいます。初期化処理とか必要になってくるので、Cのグルーコードを用意します。0;}fib_stub.hは、Haskellコンパイル時に自動生成されます。-lswiftCore実行結果:SwiftがLinuxで手軽に使えると、サーバ、クライアントともSwiftで開発ができるのでいろいろと便利かもしれません。Perfect.orgなども要注目ですね。コメントを受け付けていません。2015Swiftの関数型言語の特徴についてのメモです。私の好みの部分だけビックアップしています。https://gist.github.com/systemsblue/526eb360ec2ffc57a8a9・Generator無限の数列を生成するクラスです。引数により有限も可能です。・Curry関数のカリー化です。Swift自身対応しているのですが(f2)、f1の方がいろいろと応用がききそうです。コメントのf1は、簡略化した表記です。Haskellみたいです。・PipeF#のパイプ演算子のように記述できます。(便利なのでいろいろと使えます。gカリー化の部分適合の考え方を参考にすると、引数を与えられます。Objective-Cの相互呼び出しのテストをしましたが、CからSwiftの呼び出しについては、Objective-C経由で十分と考えていました。CとSwiftの「近さ」を実感するために、ここをもう少し踏み込んでテストしてみたいと思います。Objc");}主に上記二つのメソッド追加しました。前回からSwiftもバージョンアップしたので、OSもXcodeもアップグレードして、再びビルドしました。プログでは初めて、コードをgithubにアップしました。関連プログでもこれから活用していくつもりです。https://github.com/systemsblue/CBridgecallSwift3で、Cの関数のようにSwiftのメソッドを呼び出しているところがポイントです。Pythonのctypesを使って、Swiftのメソッドをダイナミックライブラリにして無理やり呼び出してみました。dyld_stub_binding_helperメソッド_TF4addf3addFTSiSi_Siをpython(REPL)から呼び出す。so(Linux)にアクセスするときによく使われます。(前回やったようにSwiftも構造体にアクセス可という点で似ています)オブジェクト指向を取り入れたのが、Objective-Cなら、関数型言語の特徴を取り入れたSwiftは、Functional-Cと呼んでもいいくらい、Cに「近い」と感じました。2015しばらくご無沙汰していましたiOS開発を再び始めることになりました。新しい言語のSwiftを使っていろいろと作っていますが、C言語との「距離」が意外と近い、という印象を強くうけます。「わさび抜きわさビーフ」ではないですが、C抜きの(Cにみえない)C言語みたいな感じでしょうか。相互やりとりは簡単にできるようになっています。そこで、相互呼び出しのテストをしてみました。st;}SwiftからCの呼び出しは、UnsafeMutablePointerを使うところとC構造体がそのままSwift側で使えてしまうところが、ポイントです。構造体は3とおりの呼び出しを試しました。SwiftとObjective-Cとの相互呼び出しは、簡単にできてしまいます。CBridge-Bridgeing-Header.hは、コードを追加するときに作成するか聞いてきます。ここにはC,Objective-Cのヘッダを読み込みます。CBridge-Swift.hは、見えないのですが、暗黙のルールとして記述するようです。実は、このCとの相互呼び出しは、Swiftに少し慣れてからテストしました。Optional型、関数型の特徴に興味があり、そちらを先に学習したので、(モダンなのに)Cとここまで近いとは気づいていませんでした。Swiftが最初に発表されたき、Objective-CでCのオープンソースをよくリンクして使っていたので、これがやりづらくなるのでは、という心配もありましたが、ダイレクトに呼び出せる(Objective-Cを経由せずの意味)のことでその懸念はなくなりました。この言語、かなりパワフルです。