Haskellに関するk_hamada_1988のブックマーク (30)

  • gmork.in

    Contact the domain owner here gmork.in 2023 著作権. 不許複製 プライバシーポリシー

    gmork.in
  • Monad in TypeScript

    tl; dr 普段はTypeScriptを書いているオタクが、すごいHを読んだ📖 Haskellには便利な機能や考え方がたくさんあり、その一部はTypeScriptみたいなプログラミング言語でも表現できることがわかった TypeScriptでHaskellみたいなことをしようと思うと、いわゆるモナドライブラリが便利であり、中でもfp-tsが良さそうだった 以下にはfp-tsについて具体的な解説などをコードを交えて書く。 はじめに 前職で、TypeScriptのコードに type Either<Left, Right> = ... みたいなtype aliasを書いていたエンジニアさんにHaskellを勧められ、すごいHを読んでみた。 Haskellはすごかった。もの凄く強力なチカラを2つ持っている。ガチガチな静的型付けと、モダンな関数型プログラミング技法である。美しく、型安全で、無駄

    Monad in TypeScript
  • A Tour of Go in Haskellを作ったのと、GoとHaskellの比較 - syocy’s diary

    (この記事は Haskell (その2) Advent Calendar 2017 - Qiita の3日目の記事です) A Tour of Go in Haskell というサイトを作りました。 英語版(開発中) もあります。 サイトのソースは GitHub で管理しています。 概要 今流行りの Go 言語は並行並列処理が簡単に書けることを1つの売りにしているようです。 Haskell も Go と同じく軽量スレッドやチャネルを利用することができ、並行並列が得意な言語の1つです。 そこで、A Tour of Go という Go の有名なチュートリアルの 並行性 の章を Haskell で書いてみることで、 Haskell と Go を並行並列処理の記述という観点で比べてみよう、というのが A Tour of Go in Haskell になります。 Go ユーザや Haskell に慣れ

    A Tour of Go in Haskellを作ったのと、GoとHaskellの比較 - syocy’s diary
  • Light It ~てらし鬼~ 開発ヒストリー

    Light It の開発している間、開発の状況をまあまあTwitterでつぶやいたりしましたが、 まだ忘れていないうちに、開発中に起こったことや考えていたことを、時系列でまとめて残しておこうと思いました。 Light It 公式サイトはこちら これが最終的なトレーラーです。画質は1080pで見てほしいです。そうじゃないと雰囲気が伝わらないので。 ゲームの内容は、「敵に光を当てると止まる」という特性を利用しながらのステルスゲームです。 これができるまでをまとめてみました。 2016/1/14 - ゲーム製作開始! LightIt作り始めの日です。ゲームライブラリから作り始めました。protonic と名づけました。ゲームのプロトタイプ を作るためのライブラリだから。(これはもっと使いやすいように改造し、今後kurokoという名前で生まれ変わる予定です。) アイデアが降ってきたのでゲーム作ろう

  • time.gif · HookRace Blog

    This is an endless GIF that always shows the current time in UTC: Source Code (From reports it doesn’t seem to work on Safari, other browsers should be fine.) time.gif is written in Haskell and works by dynamically generating each frame of the GIF and slowly feeding them over the HTTP connection. There is no guarantee that this GIF shows a reasonable time and this is just for fun anyway, so better

  • 資金力のないWeb系ベンチャーがHaskellを採用したらどうなったか - Qiita

    はじめに 僕の業は酪農で、ヤギのさくらちゃんをお世話するのが仕事ですが、それだけではっていけないのが世の中の悲しさなので、副業フリーランスITコンサル(兼プログラマ)や株式会社UZUZっていう会社のひきこもり系最高技術責任者としてHaskellやElmを業務で使っています。 あと、個人的な趣味で株式会社ARoWっていう社員数2名のちっちゃいWeb系の会社を実験的に経営していて、そこでもメインにHaskellを使っています。 Haskellを実際に小規模な会社やフリーランスで使っている人って、実は世の中にほとんどいないみたいです。 そこで、実際のところ「Haskellって資金力のない会社や個人が業務で使えるのん?」っていう疑問に対して率直にお答えします。 日Haskell界の現状 まず、Haskell界隈の日における現状についてお話します。 知ってる方も多いと思いますが、日でH

    資金力のないWeb系ベンチャーがHaskellを採用したらどうなったか - Qiita
  • 型クラスはインターフェースとどう違うのか | POSTD

    (注:2017/02/27、いただいたフィードバックを元に翻訳を修正いたしました。) Haskellの型クラスは、Haskellを学び始めたばかりの多くの人にとっては難しい概念です。たいていの言語はこれを表すことが全くできませんし、それに近い概念も持っていません。多くのオブジェクト指向型の言語にとっては、利用可能なものの中では Interface が最も近い言語要素でしょう。Rubyの modules は似たような役割を持っています。しかし、この概念は両方とも、名前の多重定義と一種のポリモーフィズムをアドレスするので、型クラスが提供するパワーの一部を欠いています。 この記事は、型クラスに興味を持っている人向けです。Haskellや関数型プログラミングの予備知識は必要ありません。JavaやC言語のような静的な型付き言語に慣れていれば、役に立つでしょう。 型クラスについての概要/要約 型クラス

  • だんだんわかる モナド入門 (Haskell) - Qiita

    概要 Haskellといえばモナドです。 自分がHaskellでモナドについて勉強してわかったことを、 理解を深めるために整理しつつ書いていきたいと思います。 他の解説では、Maybeモナドなど例から学ぶパターンが多いですが ここではまず簡単に理論から入っていきます。 前提 Haskellの基(関数、高階関数、部分適用などなど)について特別書いたりはしません。 0. モナドとは一体...? 名前からは実態が掴みづらい「モナド」ですが、それほど難しいものではありません。 モナドとは箱のようなものです。 値を包んだものがモナドです。 MyMonad というモナドを作ってみます。 data MyMonad a = MyMonad a MyMonad "Hello!" :: MyMonad String MyMonad 3 :: MyMonad Int MyMonad True :: MyMon

    だんだんわかる モナド入門 (Haskell) - Qiita
  • モナドはポケモン。数学が出てこないモナド入門 - Qiita

    仮説:モナドとはポケモンである このテキストは、でんこうせっかの速さでモナドが使えるようになりたいひとのための、真面目なモナド入門です。数学っぽい話はなるべく避けていますし、関数型言語についての知識がなくても読めるように書いています。対象の読者は以下のような人です。 モナドが何なのか知りたい、使いたい Haskellを学ぼうとしたがモナドがわからなくて挫折した モナドを学ぼうとしたら、箱だのブリートだのと変な喩え話をされて余計わからなくなった プログラミングを学ぶつもりが数学の講義が始まったので止めた 最初はモナドは難しいからとGHCiを使わされたが、電卓程度にしかならないので飽きた なお、何故か説明の補助としてポケモンが登場しますが、この記事を読むのに別にポケモンをプレイしたことがある必要はありません。この記事はもしポケモン要素を全部無視したとしてもわかるようになっています。 挿絵があっ

    モナドはポケモン。数学が出てこないモナド入門 - Qiita
  • Galaxy Heroes $GHC - Top BSC Token Inspired by Superheroes

    Galaxy Heroes $GHC is a gateway to a decentralised galaxy, a world vast beyond imagining where you take part in metaverse gaming, NFTs, sci-fi, animation and much more

  • [翻訳] Haskellで生産的になる(Pythonから移行して) - Qiita

    Matthew Griffithさんのブログ記事 MECHANICAL ELEPHANT - Becoming Productive in Haskell comming from Pythonの翻訳です。そういえばProductive ProgrammerってにもHaskellを使って実証実験する話が出てました。Haskellは何度も勉強しようとして途中で止まっては忘れを繰り返しているので見習いたいと思います。 最近になってようやく私は生産性を高められるぐらいHaskellに熟達してきました。そこでHaskellを学習してきた経験について、それらを忘れてしまう前に私の考えを書き留めておこうと思います。今や私はWebプロトタイピングのほとんどをHaskellで行っています。まだ普段はPythonを使い、また楽しんでいるにも関わらず、です。 Data First(データが第一) これは動的

    [翻訳] Haskellで生産的になる(Pythonから移行して) - Qiita
  • モナド則がちょっと分かった? - Qiita

    モナドを勉強しようとするとモナド則が立ちはだかります。しかしモナド則は意味だけでなく、それがモナドを勉強する上でどういう位置付けなのかも分かりにくいです。とりあえず棚上げしたまま分かる範囲のことから手を付けていましたが、ちょっと分かったような気がしたのでメモしておきます。 モナド則に関する現時点の理解ですが、正確さは保証できません。 これを読めばモナドが理解できるという類の説明(モナドチュートリアル)ではありません。 試験的にモナド則を図示しました。コードを図に転写して、多少の解釈を加えたものです。もし分かりにくければ無視しても構いません。 この記事はHaskell 超入門シリーズの番外編です。 モナド則は return と >>= の動きに関するルールです。 return x >>= f == f x m >>= return == m (m >>= f) >>= g == m >>=

    モナド則がちょっと分かった? - Qiita
  • Haskellプログラミングのコツのようなもの - Qiita

    こちらを読んだらその2もどうぞ とあるお題 シンプルな問題だけどHaskellプログラミングの基的な考え方を伝えるには良い題材だと思います.解説を試みましょう.お題は3題. テキストデータを読んで40文字以下の行のみ表示せよ. テキストデータを読んで各行の最後の10文字を表示せよ. テキストデータを読んで各行の5番目の文字を表示せよ. お題の分析 お題のプログラムはどれも 標準入力からテキストデータ(を表す文字列)を得る 元のテキストデータをゴニョゴニョして結果をテキストデータにする テキストデータ(を表す文字列)を標準出力に置く というパターンです.ゴニョゴニョの部分の関数をgonyoと名付けましょう.gonyoの具体的な内容はお題ごとに異りますが,型は共通しています.その型シグネチャはgonyo :: String -> Stringです.実は,String -> String型の関

    Haskellプログラミングのコツのようなもの - Qiita
  • 第7章 型や型クラスを自分で作ろう 前編 - Rejasupoem

    すごいHaskell楽しく学ぼう輪読会とは 経緯 2012年にSICP読書会に参加していてとてもためになったという話をしたのがきっかけで、社内でコンピュータサイエンスの勉強会をやろうということになりました。 そこで、2013年夏に社内でどのを教科書にするかアンケートをおこないました。 教科書の候補に上がった 計算機プログラムの構造と解釈(SICP) 言語:Scheme Web上での問題の解答の多さ(すくなくとも日語での)は、他を圧倒してる。 関数プログラミング入門(IFPH) 言語:Haskell SICPよりちょっと難しい。一番最初にやるではない感じ(ってえらい人が言ってました)。 プログラミングの基礎 言語:Ocaml 著者による解答例あり。いまSICPを読むのは時間の無駄 – きしだのはてな プログラミング言語の基礎概念 言語:Ocaml 「プログラミング言語の基礎概念」とい

    第7章 型や型クラスを自分で作ろう 前編 - Rejasupoem
  • Arrowの話

    12+ new features for fewer meetings and less context switching. Get more time back to ship better code, faster. Learn more. Built for professional teams Bitbucket is more than just Git code management. Bitbucket gives teams one place to plan projects, collaborate on code, test, and deploy.

    Arrowの話
  • すごい Vim で Haskell を書こう ... の補足 - 反省はしても後悔はしない

    この記事は Vim Advent Calendar の 274 日目の記事です。昨日は id:osyo-manga さんの unite-highlight つくった でした。 はじめに 先週の日曜日(8/25)になごやまつりというイベントがあり、そこで Haskell を Vim で書く方法というネタで LT をしてきました。発表するのが決まったのが前日ということもありちゃんとまとまった内容になっていなかったので、エントリで少し補足を書きたいと思います。 すごいVimでhaskellを書こう@なごやまつり from cohama とりあえず、インデントをどうにかする 発表では「Haskell のデフォルトのインデントプラグインは全然ダメ」という発言をしましたが、間違いでした。訂正します。 「Haskell のデフォルトのインデントプラグインなんてなかった!」 まさか、ないとは...。 と

    すごい Vim で Haskell を書こう ... の補足 - 反省はしても後悔はしない
  • モナドとはモナドである - モナドとわたしとコモナド

    この記事を読む前に、絶対に理解出来ないモナドチュートリアルに一度目を通してみてほしい。モナドを理解していく上で、とても重要なことが書かれている。 改めて言おう、モナドはモナドだ。コンテナだとかプログラマブルセミコロンだという説明では、モナドのすべてを正確に表せるとは言い難い。では、モナドを過不足なく説明できる、モナド以外の言葉はあるのか? 実は、モナドを表現し、かつモナドで表現される言葉は存在する。その一つは手続きである。手続き型言語の「手続き」だ。 手続きとは何か 手続きは結果を持つ おおよそすべての手続きは何らかの結果を持つ。Haskellの()、C言語のvoid、PythonのNone、Rubyのnilなども結果の一種だ。結果が出ないとしたら、そのプログラムは停止しないか、途中で異常終了するだろう。 手続きには最小単位が存在する 処理系が扱っている以上、手続きが際限なく分解できるとい

    モナドとはモナドである - モナドとわたしとコモナド
  • 絶対に理解出来ないモナドチュートリアル - konn-san.com

    世の中には、恐しい数のモナドチュートリアルがあって、それぞれモナドは象だとか、いや接ぎ木だ とか、プログラマブル・コンテナだとか、プログラム可能なセミコロンだとか、色々な説明がなされている。「モナド チュートリアル」で検索すれば、他にも色々に絵解きされた有象無象のモナドが大量に引っ掛かる。そうそう、モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?なんてのもあったな。 この記事の目的は別に、こうした既存のモナドチュートリアルを「間違ってる!」とか「わかるわけねーよ!」といって貶そうという訳ではない。実際、既に幾多書かれているチュートリアルの中でも、僕の云いたいことと殆んど同じようなことが書かれているものは沢山ある。 では、上の膨大なリストの末尾にまた一つ「わかりやすい比喩」を付け足そうというのか?というとそういう訳でもない。そうそう、モナドは比喩ではないというチュートリアル

  • モナドの六つの系統[Functor x Functor] - モナドとわたしとコモナド

    モナドは「アクション」を表す抽象的な構造である。モナドは、Haskellにさまざまな概念に対する記述能力をもたらす。 モナドの基礎 return :: a -> m a: 純粋な値をモナドで包む。 m >>= f :: m a -> (a -> m b) -> m b: モナドmに包まれた値をfに渡し、その結果として現れたモナドを結合する。 固有アクション: それぞれのモナドに固有の方法でモナドを生み出す。 実行: モナドに包まれた値を、より根源的な形に還元する。 モナド則 モナドに以下の三つの制約を課すことによって、最低限度の記述能力を保証している。 return a >>= k == k a m >>= return == m m >>= (\x -> k x >>= h) == (m >>= k) >>= h より強い制約は、より強い力を生み出す。 モナドの分類 モナドは、以下の6つ

    モナドの六つの系統[Functor x Functor] - モナドとわたしとコモナド
  • Functors, Applicatives, And Monads In Pictures - adit.io

    Written April 17, 2013 updated: May 20, 2013 Here's a simple value: And we know how to apply a function to this value: Simple enough. Lets extend this by saying that any value can be in a context. For now you can think of a context as a box that you can put a value in: Now when you apply a function to this value, you'll get different results depending on the context. This is the idea that Functors