タグ

ブックマーク / ryota-ka.hatenablog.com (11)

  • Dhall v3.0.0 がリリースされた - ryota-ka's blog

    この記事は以下のページに移転しました. blog.ryota-ka.me Dhall v3.0.0 がリリースされた.メイジャーバージョンの更新ということで,いくつかの破壊的変更を含む. Version 3.0.0 of the Dhall standard is out: * `Some`/`None` constructors for `Optional` (`Some` performs type inference) * Kind polymorphism (Allows records to store types of mixed kinds) More details: https://t.co/Dln6fFq3FW— Dhall (@dhall_lang) October 16, 2018 Some / None コンストラクタが予約語として導入 Optional 型のコン

    Dhall v3.0.0 がリリースされた - ryota-ka's blog
  • Dhall で Kubernetes の YAML 管理をスマートにやっていく

    この記事は以下のページに移転しました. blog.ryota-ka.me こんにちは.Kubernetes 班の ryota-ka です。皆さん Kubernetes やっていますか?*1 Kubernetes をやっていこうとすると,大量の YAML を書くことになって大変である.大量の YAML を書くことは大変なので,大抵コピペする.コピペをするが,コピペは怖い.例えば,deployment を定義する YAML をコピペしたとして,万一 label を変更するのを忘れて,想定していない service からルーティングされたりすると悲惨である.そもそも(個人的な意見ではあるが) YAML の仕様自体があまりにも複雑かつ難解であり*2,ある種の仕様が余計なお世話だともしばしば感ぜられる*3. 最近では kustomize が将来的に kubectl に統合される予定で開発が進められて

    Dhall で Kubernetes の YAML 管理をスマートにやっていく
  • Maybe と IO を一緒に使いたくなったら - ryota-ka's blog

    この記事は以下のページに移転しました. blog.ryota-ka.me たまには初学者向けにライトな話題を. 対象読者 すごいHを12章か13章ぐらいまでは読んだ do 構文を使って IO などの処理が書ける Haskell のプログラムはなんとなく書けるが,あまり綺麗に書けている気がしない IO の中で Maybe を使う 例として,以下のようなプログラムを考えてみよう. 2つの整数 a b を標準入力から1行ずつ順に読み込む a と b の和を標準出力に出力する 与えられた入力が整数でなかった場合には,その時点でエラーメッセージを出力し,プログラムを終了する これらの要件を満たすプログラムを素朴に実装するならば,以下のようになるだろう. import System.Exit (die) import Text.Read (readMaybe) readInt :: String -

    Maybe と IO を一緒に使いたくなったら - ryota-ka's blog
  • Template Haskell でコード中に JSON を埋め込んだりコンパイル時にファイルから型安全に読み込んだりする - ryota-ka's blog

    この記事は以下のページに移転しました. blog.ryota-ka.me 前回よりはもう少し実用的な例を. Template Haskell を使って,Haskell のコード中に JSON をそのまま埋め込むことができるようにする.また,あらかじめ用意しておいた JSON ファイルをコンパイル時に読み込み,指定したデータ型の値にする. ToC コード中に JSON を埋め込む コンパイル時に JSON をファイルから型安全に読み込む 環境 stack --version Version 1.6.3 x86_64 hpack-0.20.0 $ stack ghc -- --version The Glorious Glasgow Haskell Compilation System, version 8.2.2 $ stack list-dependencies | grep -e aes

    Template Haskell でコード中に JSON を埋め込んだりコンパイル時にファイルから型安全に読み込んだりする - ryota-ka's blog
  • Template Haskell でコンパイル時 FizzBuzz - ryota-ka's blog

    この記事は以下のページに移転しました. blog.ryota-ka.me 数ヶ月前に Twitter で,コンパイル時に FizzBuzz を計算して,実行時には計算された文字列を出力をするだけ,というコンパイル時 FizzBuzz を何かの言語でやっているのを見かけた.元ネタは江添さんがC++で書いたものらしい.インスピレーションを受けて,Haskell で書いてはみたが,簡単すぎて全然おもしろくなくなってしまった. コード GHC の制約*1により,モジュールを分割している. -- FizzBuzz.hs {-# LANGUAGE TemplateHaskell #-} module FizzBuzz (answerExpr) where import Language.Haskell.TH fizzbuzz :: Int -> String fizzbuzz n | n `mod`

    Template Haskell でコンパイル時 FizzBuzz - ryota-ka's blog
  • Type-level TypeScript - ryota-ka's blog

    この記事は以下のページに移転しました. blog.ryota-ka.me この記事は CAMPHOR- Advent Calendar 2017 の21日目の記事です. @ryota-ka です.普段は HERP という会社でリードエンジニアとして働いています.一昨日19日にサービスのティザーサイトを公開したばかりなので見てください. herp.cloud さて,12月といえば,万人受けしなさそうなネタでブログを書いては「はてブが付かねえ」と文句を言う季節ですが,今年もそういう方針で,TypeScript での型レベル計算について書きます.型レベルでの自然数などが定義できると,リストに型レベルで長さを付けることができて,空リストの先頭の要素を取ろうとしてランタイムで落ちる,という悲劇が生じる可能性をコンパイル時に排除できてとても嬉しいですね. なお,使用している TypeScript のバ

    Type-level TypeScript - ryota-ka's blog
  • 開発効率向上 tips vol.1 -ターミナル・シェル編- - ryota-ka's blog

    この記事は以下のページに移転しました. blog.ryota-ka.me 最近弊社でも大学生のエンジニアインターンが増えてきて,彼らの成長のために,開発にあたっての知見を効率的に共有する手段を色々と模索している.こういった知見は再利用性も高く,社内に閉じている必要もまったくないので,こうしてブログに書き溜めていくことにしてみようかと思う.第一弾として,端末エミュレータ上でのオペレーションの効率化について記す. ソフトウェアの開発をやっていると,なんだかんだで端末エミュレータというインタフェースの上で,シェルを使ってオペレーションを行うことが多い.開発に用いるマシンの OS はたいてい macOSLinux の何かしらのディストリビューション (Ubuntu が多いか?) だし,プロダクション環境での運用は Linux を前提することが多いだろう.また,Docker の普及により,Li

    開発効率向上 tips vol.1 -ターミナル・シェル編- - ryota-ka's blog
  • 株式会社ラブグラフを退職しました - ryota-ka's blog

    2017 - 04 - 21 株式会社ラブグラフを退職しました 4月21日を以て株式会社ラブグラフを退職した.最後のわがままで,今まで使ったことのない有給休暇を消化させてもらえることになったので,5月半ばまでは在籍することになっているが,ともかく今日が最終出社日だった.2015年3月頃から手伝っていたので,およそ2年に渡って関わり続けてきたことになる.長い間,様々な人たちから「やめろやめろ」と言われていながら,ようやく退職を決意することにしたわけであるが,以下に主たる理由を3つ挙げる. 第一に,今の組織に留まり続けても,今後自分にとって成長がないだろうと感じた. 初めの頃は,メンバーもごく少なかったこともあり,自分でサービスを作っているという実感があったが,ビジネスサイドの人間が増え,力を持つようになると,単に彼らの注文をこなすだけの作業が格段に増えた.「社内外注」とは言い得て妙なり,他人

    株式会社ラブグラフを退職しました - ryota-ka's blog
    tanishiking24
    tanishiking24 2017/04/22
    お疲れ様でした…
  • Perl 6 でジェネレータを作ったり、遅延評価してみる - ryota-ka's blog

    この記事は以下のページに移転しました. blog.ryota-ka.me この記事は CAMPHOR- Advent Calendar 2015 30日目の記事です. これまでの流れ Ruby の Enumerator でジェネレータを作ったり、遅延評価してみる - ryota-ka's blog Python でジェネレータを作ったり、遅延評価してみる – ymyzk’s blog ECMAScript 6 でジェネレータを作ったり、遅延評価してみる – ymyzk’s blog Rust でジェネレータを作ったり、遅延評価してみる - ryota-ka's blog Swift でジェネレータを作ったり、遅延評価してみる – ymyzk’s blog PHP でジェネレータを作ったり遅延評価してみる - たにしきんぐダム Scala でジェネレータを作ったり、遅延評価してみる - たに

    Perl 6 でジェネレータを作ったり、遅延評価してみる - ryota-ka's blog
    tanishiking24
    tanishiking24 2015/12/30
    次は何で書こう
  • パターンマッチなんか書いたら負け (モナドがあるから) - ryota-ka's blog

    この記事は CAMPHOR- Advent Calendar 2015 26日目の記事です. はじめに (弁明) 個人的な意見といたしましては,別にパターンマッチを使おうが負けだとはこれっぽっちも思っておりませんし,むしろ,Haskell におけるパターンマッチは非常に強力な言語機構であり,見通しよく処理を記述できる素晴らしい機能だと思っています.記事のタイトルは,単に「id:ryota-ka は将来こういうことを言っていそうだ」と過去に言われた言葉をそのまま引用したものであり,私自身の主義主張とは何ら関わりのないものである旨をここに記しちょっとまさかり投げるのやめて痛い,痛いから! この記事の趣旨について Haskell は,圏論という分野から幾分か抽象化のアイディアを得ており,様々な型を Functor や Monad といった型クラスのインスタンスとすることで,それぞれの型に対する処

    パターンマッチなんか書いたら負け (モナドがあるから) - ryota-ka's blog
  • vty + StateT で画面のスクロールを実装する - ryota-ka's blog

    この記事は CAMPHOR- Advent Calendar 2015 4日目の記事です. こんにちは,@ryota-ka です.今年もアドベントカレンダーの記事がやって参りました. 今回の記事では,ncurses を使ってターミナル上でフルスクリーンアプリケーションを作成し,ユーザーのキー入力を受け取って画面のスクロール機能を実装します.スクロールのオフセットは State モナドで管理することにしましょう. TL; DR Haskell で ncurses を触る際には vty が便利 複数のモナドを同時に扱いたい時にはモナド変換子を使おう ソース GitHub に上がってます ncurses と vty について ターミナル上でフルスクリーンで動作するアプリケーションはよくあります.例を挙げると,tig, sl, twterm, chikubeam などなど.こういった挙動を実現する

    vty + StateT で画面のスクロールを実装する - ryota-ka's blog
  • 1