タグ

ブックマーク / tune.hateblo.jp (17)

  • 優秀な秘書を雇いました!!! - Creatable a => a -> IO b

    うちの秘書を紹介します。 twitter.com けいちゃんです。年明けに挨拶とかできます。 あらかじめお断りしておきますが、「ゆ」ではじまる某日常系アニメに登場する女子高生とは無関係です。 ふみおちゃんにちねられそうになったり、ゆずこに脇腹掴まれたりするあの娘とは一切関係ありません。 ご了承ください。 関係ねえつってんだろ!! 顧客が当に欲しかったもの というわけで、Twitterのリマインダーbotを作りました。 github : https://github.com/tokiwoousaka/secretary-bot ご無沙汰してます。ちゅーんさんです。 この記事は、2017年のHaskellアドベントカレンダーに盛大に遅刻したやつです。 言い訳はいろいろあるんですが、けいちゃんの可愛さに免じて許してやってください。 元々は、Haskellで音を出して遊んで記事にしようかなーとか

    優秀な秘書を雇いました!!! - Creatable a => a -> IO b
  • Haskellでスライドをいー感じに書く話 - Creatable a => a -> IO b

    とんとご無沙汰してます。ちゅーんさんです。 仕事とかその他とか、なかなか更新するネタや切っ掛けが無かったんですが、 今日は半日くらいごにょごにょやってた進捗があるので書いときます。 Haskellでスライド書きたいんだーっていう変な人な人向きです。 何したか Haskellでスライドを作りやすくした なんで もともと、Haskellで高橋メソッドなスライドをちゃかちゃか作るべく、 Takashi Monad https://github.com/tokiwoousaka/takahashi とかいうライブラリを公開して、ドッグフーディングしていたのですが、 まず使いにくよねっていうのと、毎回ビルド出来るように色々設定するの面倒くさいよねーっていう問題を抱えてました。 勉強会に向けてのんびりスライド作るぶんには、それでも問題にならねーべーとか思ってたんですが、 名古屋に転職してからというもの

    Haskellでスライドをいー感じに書く話 - Creatable a => a -> IO b
    igrep
    igrep 2017/07/08
    git clone takahashi_temp.gitのところ、git clone takahashi_temp.git $pname にしたら次の行のmvコマンド入らなくなるはず。
  • Haskellでポーカーを作ろう〜第七回 プロジェクトを整理するよっ〜 - Creatable a => a -> IO b

    外はすっかり真夏日よりですが、今日も冷房の前ででプログラミング充しています。 嘘です、ずっとスプラトゥーンやってました。 結果として相変わらずGithubのContributionsは真っ白です。 どもども、ちゅーんさんです。 このエントリは、ちゅーんさんによるポーカー開発連載記事の第七回目です。 過去のエントリはこちら 第一回 リストのシャッフルとカードの定義 第二回 ポーカー・ハンドの判定をする 前編 第三回 ポーカー・ハンドの判定をする 中編 第四回 ポーカー・ハンドの判定をする 後編 第五回 カードの入れ替え処理を作る 第六回 CPU対戦機能を付けよう 前回までは、やや場当たり的に作って行きましたが、 そろそろ程度整理しないと全体像が掴みにくい規模になってきたようです。 そこで今回は、Haskellのビルドツールについて簡単に紹介/説明し、 ここまで書いたプログラムをプロジェクト

    Haskellでポーカーを作ろう〜第七回 プロジェクトを整理するよっ〜 - Creatable a => a -> IO b
  • もうcabal hellは怖くない、Stackを使ってみるよ! - Creatable a => a -> IO b

    はいはいどうも、最近はずっとドラクエやってます。 ちゅーんさんです。 人生ではじめてプレイしたRPGってドラクエ6だった気がします。 スマフォ版で久々にプレイしたのですが、やっぱりアレです。 バーバラちゃん、いいですね。 あ、ひとまずラスボス倒したので、今は3やってます。 ポカパマズさああああああん!!!! はい。 というわけで、 この記事はちゅーんさんがイマドキのHaskellのビルドツールである、 stackを2日くらいぐりぐりいじって覚えた使い方をまとめようと思います。 ざっくりと、stackってどんなもんよ、みたいな話は http://qiita.com/tanakh/items/6866d0f570d0547df026 の前半を読むとだいたいわかりますので、 ここでは実用的な具体例はさておき、とにかく動かしてみたい人に向けて、 「ここに書かれてる通りに色々やったら、なんとなくst

    もうcabal hellは怖くない、Stackを使ってみるよ! - Creatable a => a -> IO b
  • Haskellでポーカーを作ろう〜第五回 カードの入れ替え処理を作る〜 - Creatable a => a -> IO b

    はいはい、どうも、お風呂大好きちゅーんさんです。 お風呂あがりの乳酸菌とかたまりませんね。最近はアセロラジュースとか飲んでます。 はい このエントリは、ちゅーんさんによるポーカー開発連載記事の第五回目です。 過去のエントリはこちら 第一回 リストのシャッフルとカードの定義 第二回 ポーカー・ハンドの判定をする 前編 第三回 ポーカー・ハンドの判定をする 中編 第四回 ポーカー・ハンドの判定をする 後編 前回からの修正点 フルハウスの判定処理なんですが、改めて調べると、 「3枚組の最強カード」「2枚組の最強カード」の順に比較しなくてはいけないらしいですね。 前回は2枚組か3枚組の両方から一番強いカードを選択していましたが、これじゃまずいです。 同じ強さのカードは4枚しか無いため、ドローポーカーの場合は3枚組で引き分けるという事はありえないので、 最強カードとしては3枚組の1枚を選択すれば良い

    Haskellでポーカーを作ろう〜第五回 カードの入れ替え処理を作る〜 - Creatable a => a -> IO b
  • Haskellでポーカーを作ろう〜第四回 ポーカー・ハンドの判定をする 後編〜 - Creatable a => a -> IO b

    ポーカー開発の連載書きながら、 改めてコード書くより日語書くほうが難しいなぁと感じています。 ちゅーんさんです、おはこんばんちわ。 ドクター・スランプネタなんて今時通じる人居るんですかね、 ちなみに実家には全巻揃っていたので、ひと通り読みました。 聞いてないですね はい このエントリは、ちゅーんさんによるポーカー開発連載記事の第四回目です。 過去のエントリはこちら 第一回 リストのシャッフルとカードの定義 第二回 ポーカー・ハンドの判定をする 前編 第三回 ポーカー・ハンドの判定をする 中編 状況整理 さて、いよいよポーカー・ハンドの判定処理も大詰めです。 簡単に現状を整理して、残りのやる事を再確認しましょう。 まず、手札は5枚である必要があり、予めソートしておく事で判定処理を行いやすいという理由から、 次のようなHand型を定義しました。 newtype Hand = Hand { f

    Haskellでポーカーを作ろう〜第四回 ポーカー・ハンドの判定をする 後編〜 - Creatable a => a -> IO b
    igrep
    igrep 2015/05/18
    “mplus関数は「どちらか」がJust”"Maybeモナドは、「すべてが」Just"
  • Haskellでポーカーを作ろう〜第三回 ポーカー・ハンドの判定をする 中編〜 - Creatable a => a -> IO b

    はいどーも、我が家にポーカーチップとトランプカードが届きました。 ポーカー作っていたら、うっかりポーカーそのものが楽しくなってしまったちゅーんさんです、ハロ/ハワユ テキサス・ホールデム当に楽しい・・・楽しいです・・・ 楽しい・・・楽しい!!やろう!!やろうよ!一緒にやろうよー!!! ・・・落ち着きました。 そんなわけで、このエントリは、ちゅーんさんによるポーカー開発連載記事の第三回目です。 過去のエントリはこちら 第一回 リストのシャッフルとカードの定義 第二回 ポーカー・ハンドの判定をする 前編 ポーカー・ハンドの判定条件を整理する 前回、ワンペアからストレート・フラッシュまで、 全てのポーカー・ハンドを判定する関数の型を、以下のように定義しました。 onePair :: Hand -> Maybe (PokerHand, Card) twoPair :: Hand -> Maybe

    Haskellでポーカーを作ろう〜第三回 ポーカー・ハンドの判定をする 中編〜 - Creatable a => a -> IO b
    igrep
    igrep 2015/05/16
    気が向いたら読むかも
  • Haskellでポーカーを作ろう〜第二回 ポーカー・ハンドの判定をする 前編〜 - Creatable a => a -> IO b

    はいはいどーも、皆さん進捗どうですか? 毎度おなじみのちゅーんさんですこんにちは。 この記事は、ちゅーんさんの連載エントリ「Haskellでポーカーを作ろう」の第二回目です。 第一回 リストのシャッフルとカードの定義 今回から2〜3回にわけて、ポーカー・ハンドを判定する処理を作っていきます。 若干ややこしい部分も含みますので、一つ一つ確実に理解しながら進めていきましょう。 尚、この記事では各ポーカーハンドの説明は行いません。 ↓↓↓覚えてないよーって人は、Wikipediaを見ときましょう↓↓↓ http://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%BC%E3%82%AB%E3%83%BC%E3%83%BB%E3%83%8F%E3%83%B3%E3%83%89%E3%81%AE%E4%B8%80%E8%A6%A7 はじめに この連載エントリでは、なるべく

    Haskellでポーカーを作ろう〜第二回 ポーカー・ハンドの判定をする 前編〜 - Creatable a => a -> IO b
    igrep
    igrep 2015/05/14
    素晴らしい。 " ちょっとした条件の保証や、軽い意味付けを与えるためだけに、 新たな型を定義するという事をよくやります"
  • Haskellでポーカーを作ろう〜第一回 リストのシャッフルとカードの定義〜 - Creatable a => a -> IO b

    はいはいどーも、進捗ダメです。ちゅーんさんです。 基的にコンスタントに何かを生み出し続けなくてはいけないのが、 ギークなアクティブニートの使命なわけですが、一日の半分以上は睡眠とドラクエに当てらています。 人生なんてそんなものです。 えーっと そういえば、勉強会とかTLとかで、 「すごいH読んで、基的な事はわかったと思うけど、Haskellで具体的なプログラムを開発するイメージが出来ない」 なんていう話を聞くことがたまにあって、そんなに大きくなくても良いので実践的なやさしい文章が増えると良いなぁとか、 ずっと思っていたわけです。 で、そういう状況でドラクエのカジノのポーカーをプレイしたりしていると、 「あ、ポーカー作ろう」っていう気分になったりするじゃないですか。 なったんですよ。 んなわけで、今回からちょっとづつ、Haskellを使ってCUIでプレイできるポーカーゲームを作っていき

    Haskellでポーカーを作ろう〜第一回 リストのシャッフルとカードの定義〜 - Creatable a => a -> IO b
  • Haskellオブジェクト指向に触れてみよう〜中級編〜 - Creatable a => a -> IO b

    PRITZサラダ味は神、異論は認めない。 はいどうも、直接題に入ったら負けだと思っているタイプのHaskeller、ちゅーんさんですこんにちは。 今日も前回に引き続き、「Haskellでオブジェクト指向」と題しまして、objectiveを紹介したいと思います。 題に入る前に 前回の記事に、objective開発者の@fumievalさんからコメント頂きました。 最新のobjectiveでは`stateful handle s where handle` …の代わりに、 {-# LANGUAGE LambdaCase #-} stringObject :: String -> Object StringObject IO stringObject s = s @~ \case GetString -> get SetString s -> put s PrintString -> get

    Haskellオブジェクト指向に触れてみよう〜中級編〜 - Creatable a => a -> IO b
    igrep
    igrep 2015/03/31
    全然理解できてないけどまとめだけ読んでヤバさが伝わった。
  • モナド基礎勉強会vol2(#monadBase)で「米田の補題」の話をして来ました - Creatable a => a -> IO b

    はいはいどうも、花粉症で鼻水じゅびじゅばなちゅーんさんです、おこんばんわ。 色々あって現在求職中なのもあり、自分の書きたいコードをゴリゴリ書いたり、理論的な事をがつがつ勉強したりする良い時間を作れていて、だいぶ下請けPG時代に貯まった疲れも取れてきたのかなぁとか思ったりしてます。 これを期に手をつけはじめた事が色々あるので、そのうちいくつかでも自分の中でケジメを付けるまで、もうちょっとのんびりしたいなぁと思い、寄生している実家の母親の顔色と、銀行口座残高とにらめっこしつつ、やりたいようにやってる感じです。 さて、そんな機会を使って、名古屋で開催された「モナド基礎勉強会vol2」へ足を運んで登壇させて頂きましたので、今日はそのレポートというか、雑記みたいなエントリです。 どんな勉強会だったのか こんなんです xbase.connpass.com 「基」ではなく「基礎」ですから、午前の部でが

    モナド基礎勉強会vol2(#monadBase)で「米田の補題」の話をして来ました - Creatable a => a -> IO b
    igrep
    igrep 2015/03/24
    お疲れ様でした!"いずれまたまとめたいと思います。"の時までにもう少し僕が圏論知ってますように。
  • Haskellでプレゼン資料を作ってみよう!! - Creatable a => a -> IO b

    gdgdと文章を読みたくない人のためにとっとと題済ませます。 ちゅーんさんがHaskell上でプレゼン用のスライドを生成するための言語内DSLを公開しました。 Hackage : http://hackage.haskell.org/package/takahashi サンプル兼ドキュメント:http://tokiwoousaka.github.io/takahashi/contents/20150213takahashi.html (ソースコード) Github:https://github.com/tokiwoousaka/takahashi 以上のURLを元によろしくやって頂ければ幸いです。 開発に至った経緯とか はいども、こころぴょんぴょんちゅーんさんです。 皆さん、プレゼンしてますか? プレゼンは大事ですよー、婚活と同じくらいには大事です。 というわけで、 イマドキのプレゼンテ

    Haskellでプレゼン資料を作ってみよう!! - Creatable a => a -> IO b
    igrep
    igrep 2015/02/15
    次はこれで決まりだな・・・!
  • 「圏論を学んで得られる事、得られない事」に対する補足 - Creatable a => a -> IO b

    はいどうも、萌え豚にはなるまいと思っていた数年前の自分はどこへやら、今ではゆゆ式が生きがいのちゅーんさんです。 以前 こんな感じの記事を書きました所、主にブクマにて色々な意見を頂きまして、 色々と説明不足だったかなーという所もありましたので、補足のような記事を書くことにしました。 尚、記事では、コメント欄やはてブに付けられたコメントを引用させて頂いております。 問題ありましたらはてブやコメント欄、あるいは僕のTwitterアカウントまでご連絡頂ければ、 対応致しますのでご一報ください。 何が言いたかったか 何度も言ってることですけど、これが伝わってないと話にならないので、 もう一度簡単に触れておきます。 この記事は読者に圏論を教えるためのブログ記事ではなく、 圏論とプログラミングの立ち位置を、伝える事が目的でした。 もともと、一部で「銀の弾丸」的なニュアンスで広まっている雰囲気がありまし

    「圏論を学んで得られる事、得られない事」に対する補足 - Creatable a => a -> IO b
    igrep
    igrep 2015/02/04
    “知識として習得した上で、あなたの実務で役立たせる事が出来るか否かはあなた次第です。 先ほど申し上げましたように、 圏論はあなたの開発の設計に対して大いに「ヒント」となり得るもの”
  • プログラマであるあなたが圏論を学んで得られる事、得られない事 - Creatable a => a -> IO b

    「Haskellと数学とちょびっと音楽」なんていうシャレオツなサブタイをブログに付けてるのは誰ですか? 俺だよー! 大体、Haskell関連のコミュニティに顔を出していると、 数学科出ましたーとか、物理専攻ですー、とか、そーいう人がわりと多いのですが、 僕は「勉強なんて出来ないんジャー・レッド」だったので、サブタイトルに「数学」なんて入れつつも、 数学の話はほとんど出来なかったりとか出来たりとか・・・結局Haskellの記事しか書いてないですね、はい。 ただ、どちらかというと、Haskellでも処理系どうのとか、パフォーマンス云々とか、 そういう話より型システムでどうやって抽象化するかーみたいな、そういう話のほうがおもしれーとか思ったりしたので、 気づいたら圏論なんかはガジガジしてまして、多少の自己流の知識があったりとかなかったりとかしてるのです。 純粋関数型やらHaskellやらがメジャ

    プログラマであるあなたが圏論を学んで得られる事、得られない事 - Creatable a => a -> IO b
    igrep
    igrep 2015/01/22
    敢えてここで持論を述べるなら、プログラマにとっての圏論は社会学者にとっての統計学みたいなもんだと思ってる。詳しい仕組みを知るに越したことはないけど、知らなくても使えればいい。
  • ちゅーんさんがreasonable-lensをHackageでリリースしたようです - Creatable a => a -> IO b

    はいはい、最近色々とアレがアレしてアレな感じのちゅーんさんですがちゃんと生きてます。安心してください。 もともとekmettによってlensというパッケージが公開されています。 これがすごく強力で便利な代物なのですが、いかんせん巨大で依存関係も複雑なので、使うのに気合が必要という問題があったりします。 根的な仕組みは複雑であれ大きくは無いので、良く使う機能に限定した小型版lensを実装しました。 以下、HackageのURL: https://hackage.haskell.org/package/reasonable-lens これは何なの lensは複雑な代数的データ型へのフィールドアクセスをぐっと使いやすくするためのライブラリです。 TemplateHaskellによるコンパイル時処理で、アクセサと呼ばれる関数を生成する事で、ややこしいフィールド操作をサポートします。 基的な機能

    ちゅーんさんがreasonable-lensをHackageでリリースしたようです - Creatable a => a -> IO b
    igrep
    igrep 2014/12/08
    ちゅーんさんこんなの出してたんだ!
  • 型「の」計算にレッツチャレンジ - Creatable a => a -> IO b

    はいどーも、ちゅーんさんです。 最近「楽園追放」見てきたのですが、楽しかったです。(小学生並のry いやあの、普通に良作でしたので、興味のある方なんかは、是非劇場で見に行くと良いと思います。 ハデだし。 いえい はい、で、この記事はあれです。 Haskell Advent Calendar 2014 - Qiita の、7日目の記事です。 皆さん!型は好きですかーっ!? お れ は 好きだぜーっ!!! とゆーわけで、今日は代数的データ型とゆー概念そのものに関する、ちょっといっぱい数学っぽい話をしようと思います。 この「っぽい」っての大事、超大事。 型の足し算 ここにUnit型がありますでしょ。 data () = () deriving Eq 突然ですが、Unit型は1です。 あ、それからここにBool型があります。 data Bool = True | False deriving Eq

    igrep
    igrep 2014/12/07
    キャーチューンサンヨー!
  • lensのmakeClassyで型を合成する - Creatable a => a -> IO b

    はいはい、とんとご無沙汰しとります。ちゅーんさんです。 HaskellではStateモナド等を使って、状態を扱う事ができます。 また、モナドの合成にはモナド変換子がよく使われますが、 モナド変換子は階層構造になっているため、複数の状態系モナドを、 組み合わせて使うような、よくある場合に適さないという問題があります。 で、 この解決方法には、例えばOleg先生のextensible-effects 等、いろいろと考えだされています。 個人的にEffは超絶技巧のわりにはあまり分かりやすいイメージもなく、 既存のモナドをすべて置き換えなくてはいけないため、あまり好きではないのです。 そこで、単純に複数のレコードを一つに纏めあげたいだけの場合は、 lensライブラリの makeClassy というTHを使って型を作成するのをおすすめします。 導入 まず、以下のような2つの型を考えましょう。 dat

    lensのmakeClassyで型を合成する - Creatable a => a -> IO b
  • 1