タグ

ブックマーク / tanakh.hatenablog.com (4)

  • 関数型!侵略ノススメ☆ - 純粋関数型雑記帳

    (この記事は Functional Ikamusume Advent Calendar jp 2010 の為に書かれました) 侵略!侵略!侵略!侵略!侵略!侵略!イカ娘! 再帰しなイカ? main = putStrLn $ f 6 where f 0 = "イカ娘!" f n = "侵略!" ++ f (n-1) 古風に再帰しなイカ? main = putStrLn $ f 6 where f 0 = "イカ娘!" f (n+1) = "侵略!" ++ f n 左派じゃなイカ? main = putStrLn $ foldl (\a _ -> "侵略!"++a) "イカ娘!" [1..6] 右派じゃなイカ? main = putStrLn $ foldr (\_ a -> "侵略!"++a) "イカ娘!" [1..6] 右派に見せかけた左派じゃないか? main = putStrLn $

    関数型!侵略ノススメ☆ - 純粋関数型雑記帳
  • 純粋関数型雑記帳

    TL;DR 簡潔で直感的に扱える、宣言的なRust向けのコマンドライン引数パーザーを作りました。 https://crates.io/crates/argopt モチベーション Rustにstructoptというライブラリがあります。これはコマンドライン引数をパーズするライブラリなんですが、僕はこのライブラリが大好きなんです。Rustのライブラリの中で一二を争うほど好きです。なんならコマンドラインツールをRustを書く理由の大部分がこのライブラリの存在といっても過言ではないかもしれません(過言ですけど)。 しかしstructoptも使い続けていると、どうにももっと便利にできるんじゃないのかと思う部分が出てきます。structoptでは名前の通りコマンドライン引数をstructで定義して、それに#[derive(StructOpt)] とStructOptをderiveすることでパーザーのコ

    純粋関数型雑記帳
    rti7743
    rti7743 2010/10/07
  • JOI 春合宿の講義資料 - 純粋関数型雑記帳

    id:iwiwi さんからご紹介に与りまして、JOI春合宿にて講義をさせて頂きました。テーマはなんでも良いとのことでしたので、関数プログラミング入門ということで話させて頂きました。スライドを以下に公開しております。 関数プログラミング入門View more presentations from tanakh. 聴いて頂いた皆さま、拙い講義ではありましたが、どうもありがとうございました。二時間も頂けるとのことだったので、あれもこれも話したいとなって、まとまりのない発表になってしまった感が否めませんが、少しでも関数プログラミングの魅力が伝われば幸いです。関数プログラミング入門ということで、関数プログラミングを全く知らない人をターゲットに作りましたが、少々無理があったかもしれません。私はネルー値が1を切らないとなかなか準備に取り掛かれなくて、当日は準備不足で資料のミスも目立ったし、資料の退屈さを

    JOI 春合宿の講義資料 - 純粋関数型雑記帳
  • チームラボ天下一武道会 - 純粋関数型雑記帳

    チームラボ天下一武道会 ~コードGolf & F1レース!~ : ATND に参加してきました。普段Java使っていないのでどうなるかと思いましたが、なんとか優勝することができました。 問題は、ユーザデータと商品の購入データが与えられるので、全商品間のコサイン類似度を求めよというものでした。入力は <ユーザID>,<商品ID> のCSVで与えられ、出力は商品ID×商品IDの二次元配列をCSVで出します。購入データは1万件、ユーザ数は1000以下、商品数は500以下という制限です。 順位は、実行時間によるスコアとバイトコードのサイズによるスコアの和によって付けられます。それぞれ50点満点で、実行時間は 10秒 (50点) 60秒 (0点) バイトコードのサイズは、 1Kbyte (50点) 6Kbyte (0点) を基準として、線形補完されて決まります。50点満点ですが、基準値を超えた場合は

    チームラボ天下一武道会 - 純粋関数型雑記帳
  • 1