タグ

haskellに関するmanabouのブックマーク (84)

  • 我田引水的な「関数プログラミングの入門」資料紹介 - あどけない話

    これは、Haskell Advent Calendar 2021の2日目を埋めるために書いた記事です。実は単に僕が作った「関数プログラミングの入門」の資料の宣伝です。 ちなみに、僕の関数プログラミングの定義は「不変データプログラミング」であり、おそらく最も厳しい定義です。なので内容が分かれば、関数プログラミングに入門できた言ってもよいのではないかと思います。 関数プログラミングことはじめ 僕は毎年、岡山大学の三年生に向けて、2コマで関数プログラミングを教えています。その資料が、「Cプログラマーのための関数プログラミングことはじめ」です。岡山大学工学部情報系学科の学生は、C言語を習っているので、C言語に似た文法を独自に定義して、関数プログラミングを説明しています。 [入門]関数プログラミング [入門]関数プログラミングは、WEB+DB PRESS Vol.67に掲載された記事です。編集部のご

    我田引水的な「関数プログラミングの入門」資料紹介 - あどけない話
  • SoccerFun

  • プログラミングとは ― 最強のカレーレシピ ― - golden-luckyの日記

    「うちの学校でもついにプログラミングの授業が始まったよ」 「それは興味深いね。どんなふうに教えてるの? やっぱりScratchとか?」 「Scratch? ああ、プログラミング言語のことか。プログラミング言語は使わなくていいんだよ」 「え?」 「小学校で学ぶプログラミングっていうのは、プログラミング言語を覚えさせることが目的じゃないからね。システム思考力とかロジカルシンキングって聞いたことあるだろ?」 「あるかないかでいったら、あるよ」 「プログラミング言語みたいなのは、単なる技術だ。それは仕事で必要な人だけが覚えればいい。子どもたちに教えるべきことは、プログラミング言語みたいな技術じゃなくて、システム思考やロジカルシンキングの延長といえるプログラミング的思考なんだよ」 「プログラミング的思考っていうのが、システム思考やロジカルシンキングとどう違うのか、いまいちよくわからないんだけど…」

    プログラミングとは ― 最強のカレーレシピ ― - golden-luckyの日記
  • 全ての開発者が学ぶべき5つの言語 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 「どの言語を学ぶべきか」という議論はエンジニア向け記事の定番ネタですが、HackerNoonに投稿された5 Programming Languages Every Master Developer Should Learnという記事がなかなか興味深かったので翻訳してみました。 (2018/11/04追記) こちらの記事に関する「別視点からの意見」として下記のような記事を追加いたしました。宜しければこちらも併せてご参照ください。 Ruby->Go->Scalaという習得順序がエンジニアの爆速の成長に最適である理由 はじめに 「プログラマー

    全ての開発者が学ぶべき5つの言語 - Qiita
  • GitHub - forest-lang/forest-compiler: A multi-syntax functional programming language that compiles to WebAssembly.

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - forest-lang/forest-compiler: A multi-syntax functional programming language that compiles to WebAssembly.
  • glossではじめるグラフィック描画 :: Haskell入門の次に読む記事 - Qiita

    glossはとても簡単にグラフィックを描画できるHaskellのライブラリです。この記事はgloss入門ということで関数・型・型クラスなどのHaskellの基的な文法は理解した人向けにglossの使い方を丁寧に書いていきたいと思います。 環境構築 プロジェクトの管理はstackを使って進めていきます。stackを知らない/まだ使っていない人は以下の記事を参考にstackを使える環境を構築してください。 Stackを使ったHaskellのインストール Stackでやる最速Haskell Hello world! (GHCのインストール付き!) Haskell Stack とは何をするツールなのか stackコマンドが使えるようになったら早速プロジェクトを作りましょう。

    glossではじめるグラフィック描画 :: Haskell入門の次に読む記事 - Qiita
  • C++の入門書を書くためにHaskellを学ぶことにした

    C++17の参考書、江添亮の詳説C++17はすでに書き上げて、来年の出版を待つばかりになっている。 https://github.com/EzoeRyou/cpp17book 次に書くC++の入門書にしようと思っているが、入門書を書く前に、少し時間をかけてHaskellを学ぼうと思っている。 なぜHaskellを学ぶのか。Pandocのためだ。 Pandoc 私のは、Markdownで書いてPandocで各種フォーマットに変換している。アスキードワンゴでは、Pandocを使ってlatexに変換した上で、手作業で出力されたlatexを編集して組版している。つまり、私の参考書の執筆はPandocに支えられていると言ってよい。 さて、アスキードワンゴ編集部(ドワンゴ)は私がを出版契約している出版社であり、かつ私が雇用契約している会社でもある。アスキードワンゴの編集者は私の編集者であり同僚

  • 来年出版予定の「江添亮の詳説C++17」の組版に使うTEXを公開

    来年出版する予定のC++17の新機能を解説した参考書、書名は現在、「江添亮の詳説C++17」を予定しているの組版に使うTEXを公開した。 https://github.com/EzoeRyou/cpp17book この参考書は今年2017年に9ヶ月ほどかけて書いていたで、C++17に追加された新機能のほぼすべてを解説している。 この参考書は、アスキードワンゴから出版される予定だ。アスキードワンゴではの組版にTEXを使っている。 私は自由なライセンスの価値を信じるものであり、も自由になるべきだと信じている。私の書いたは自由なライセンスにできるとして、組版に使ったTEXも公開したい。TEXは明らかにソースコードに当たるものであり、ソースコードが公開できなければGPLv3ではライセンスできないのでCC-BY-SAなどを使わなければならない。私が執筆したC++11/14コア言語は、こうい

  • ステートマシン猛レース - モナドとわたしとコモナド

    ストリーム処理ライブラリはHaskellにおいて競争の激しい分野の一つだ。ストリーム処理ライブラリとは大雑把に言うと、IOなどの作用を絡めながら値の列(ストリーム)を生成したり、処理したりする構造を提供するライブラリである。多くのライブラリは、以下の3種の構造を定義している。 生産者(プロデューサー): IOなどのアクションを伴いつつ値を生成する。 消費者(コンシューマー): 多くの場合モナド変換子になっており、await :: Consumer s m sのようなアクションを組み合わせ、値の列を処理するプログラムを書ける。 変換者(トランスデューサー): 入力を受け取りながら、出力もできる。 生産者と消費者が変換者の特殊な場合であるものも多い。 今回は、基中の基とも言える操作であるスキャンの速さを調べる。scan (+) 0は入力ストリーム[0,1,2,3, ...]を出力[0,1,

    ステートマシン猛レース - モナドとわたしとコモナド
  • 実践編!Haskellらしいアプリケーション開発。まず型を定義すべし【第二言語としてのHaskell】|ハイクラス転職・求人情報サイト AMBI(アンビ)

    実践編!Haskellらしいアプリケーション開発。まず型を定義すべし【第二言語としてのHaskell】 トランプを使った有名なゲーム「ブラックジャック」の手札の値を計算をするアプリケーションを書きながら、Haskellによるプログラミングの中心となる「型を定義し、その型を利用した関数を書く」ことを実践してみましょう。 こんにちは。Haskell-jpの山悠滋(igrep)です。 Haskellでプログラミングを始めるのに最低限必要となるものを「Haskellらしさって?「型」と「関数」の基を解説!」という記事でお話しました。 その際に「Haskellによるプログラミングの大きな部分を占めるのは、問題に合わせた型を自分で考えて定義し、その型を利用した関数を書くこと」 と宣言しましたが、実践するところまでは踏み込みんでいません。 この記事では、実際にアプリケーションの一部を書きながら、「型

    実践編!Haskellらしいアプリケーション開発。まず型を定義すべし【第二言語としてのHaskell】|ハイクラス転職・求人情報サイト AMBI(アンビ)
  • Haskellらしさって?「型」と「関数」の基本を解説!【第二言語としてのHaskell】 - エンジニアHub|Webエンジニアのキャリアを考える!

    Haskellらしさって?「型」と「関数」の基を解説!【第二言語としてのHaskell】 第二言語としてHaskellを学ぶ道案内。開発環境の準備から、Haskellらしいプログラミングの考え方まで、Haskell-jpのigrepさんが丁寧に解説します。 こんにちは。Haskell-jpの山悠滋です。 この記事では、すでにプログラミング経験のある方向けに、第二言語としてHaskellを学ぶ道案内をしていきます。 環境の準備や、自明なサンプルプログラムの紹介にとどまらず、Haskellらしいプログラミングの考え方も伝えていく予定です。 Haskellについて Haskellというと、「関数型」というキーワードが思い浮かぶ方も多いと思います。 確かにHaskellは、すべての関数がカリー化されており、それらを組み合わせてプログラムを書いていく関数プログラミングがしやすい言語です。 しかし

    Haskellらしさって?「型」と「関数」の基本を解説!【第二言語としてのHaskell】 - エンジニアHub|Webエンジニアのキャリアを考える!
  • Haskell、OCaml、RacketでGCのレイテンシを測る | POSTD

    James FisherはGHCのランタイムシステムが彼らのHaskellのプログラム上でレイテンシに悪影響を及ぼしたケースを、ブログに投稿しています。 低レイテンシ、大きなワーキングセット、そしてGHCのガベージコレクタ:3つのうち2つを選べ この記事では、その問題(基的に、レイテンシはコピー時間の影響を受ける)を示す非常にシンプルな合成ベンチマークを提案していて、さらに「50ミリ秒のレイテンシは過剰」と言っています。それで、他のGCがどのようにこの問題を処理しているかを見るため、OCamlとRacketで合成ベンチマークを再現したら面白いだろうと思いました。 細かい話は抜きにすると、要点は次のとおりです。OCamlのGCは古い世代にある大きなオブジェクトに関しては問題はありません。コレクションをコピーするのではなくマーク & スイープで処理するためで、このベンチマークではワーストケー

    Haskell、OCaml、RacketでGCのレイテンシを測る | POSTD
  • 【 Haskell 自作関数 】文字列関数(編)〜 文字列 が、パターン文字列 を 部分文字列 として含むか否か を、 boolean値(True | False) で 返す 関数 - Qiita

  • 秒速でコピペしたいHaskellデバッグ用関数 - Qiita

    ElmのDebug.traceみたいな挙動のプリンター、誰かhackageに挙げてないの?ないならさっさと作るよ? #haskell — Yuji Yamamoto: 山悠滋 (@igrep) 2017年1月25日 いつも秒速で作ってる人もいるみたいだけど、やっぱり逐一書く時間が勿体ないと思うのでここにメモします 1。 求めていたものはTraceUtilsにありました。 気が向いたらcabalファイルに書けばよいでしょう。 ただ、どうやらstackageには登録されておらず、LTS 7.16の時点で存在しません。 ドキュメントにも "Feel free to copy&paste these functions into modules that need them, that may be easier to remove/clean up than adding a cabal de

    秒速でコピペしたいHaskellデバッグ用関数 - Qiita
  • LiquidHaskell コトハジメ - チェシャ猫の消滅定理

    このエントリは Haskell Advent Calendar 2016 および Formal Method Advent Calendar 2016 の 23 日目の投稿です。のはずでしたがすでに日付が変わりました。謹んでお詫び申し上げます。 ちなみに 22 日目の担当者はそれぞれ Haskell Advent Calendar 2016 : heredocsの紹介 - Qiita Formal Method Advent Calendar 2016 : 農夫 山羊 キャベツ 狼 - Qiita です。偶然ですが同じ方が執筆担当ですね。 さて、エントリでは Haskell の型の表現力をより豊かにする仕組み、 LiquidHaskell について概要を紹介します。使用するサンプルコードは Samples of Verification by LiquidHaskell · GitHub

    LiquidHaskell コトハジメ - チェシャ猫の消滅定理
  • 高速なキューを作る話(前編) - Qiita

    私が以前Haskellで作成した(割と自己満足な)kazura-queueという比較的高速なキューのライブラリがあります。 このライブラリを作るときに考えたアレコレを書いてみたいと思います。 前提 ここでいうキューって何? データ構造としてのキュー(Sequenceみたいな)や分散処理用のキュー?(RabbitMQみたいな)ではなく、並行処理のためにスレッド間の部品として使うようなキュー(Chan(やTQueueやTChan)みたいな)を意図しています。 ここではChanが持っているキューとしての性質をざっと書き出してみましょう。 キューに入るデータの型は任意 Chan aという型で表現できる範囲で好きなデータを入れることができる。 FIFO キューなのだから当たり前といえば当たり前かもしれませんが一応。 スレッドセーフ 複数のスレッドが同時に書き込もうとしても問題が起きない。1 複数のス

    高速なキューを作る話(前編) - Qiita
  • CQRSとイベントソーシングの使用法、または「CRUDに何か問題でも?」 | POSTD

    書き込みと読み込みのどちらに力を入れているかは、ストレージエンジンによって異なります。たとえば昔ながらのリレーショナルデータベースは、外部キーなどの制約を使ってデータの整合性をうまく制御できるようになっています。一方でNoSQLデータベースは、スループットとスケーラビリティを確保するために、そういった組み込みのガードレールをはずしてしまいました。データ層においても、どちらか一方に特化した最適化をすることがあります。たとえば、あらかじめ計算済みの値を保持しておけば、「一日あたりのサイト訪問者数」などの読み込み操作を効率よく行えるでしょう。ストレージソリューションのメーカーはどこも、「うちのプロダクトならあらゆるニーズを満たせます」などと自社製品の機能を自慢します。しかし実は、昔ながらのCRUDモデルに沿ってストレージエンジンを選んでデータ層を設計した時点で、さまざまな関心事の間で何らかの妥協

    CQRSとイベントソーシングの使用法、または「CRUDに何か問題でも?」 | POSTD
  • Ladder of Functional Programming 〜関数型プログラミングのレベル分け〜 - Qiita

    LambdaConfがツイートにて関数型プログラミングのレベル分けを発表していました。今後LambdaConfから発信される発表にはこのレベルが表記され, 自分のレベルにあったコンテンツが探しやすくなるようです。このレベル分けはプログラマの優劣を付けるようなものではなく, 広く深い関数型プログラミングの世界で自分が今どのレベルにいるのかを適切に理解し次にどこに向かうべきなのかを知るのにたいへん役に立つものだと思います。 表を眺めてみると関数型プログラミングというよりかはHaskellのレベル分けのような印象も受けますが、広く知られるべきだと思ったので翻訳してみました。僕が未熟でトンチンカンな訳をしている箇所もあると思うので、何か見つけた場合は遠慮なくコメントや編集リクエストをお願いします LambdaConf Ladder of Functional Programming (LOFP)

    Ladder of Functional Programming 〜関数型プログラミングのレベル分け〜 - Qiita
  • HaskellのロガーKatipを試す - syocy’s diary

    モチベ Haskell の実行時ログ出力を行うライブラリは monad-logger が一番有名っぽい。 これは Yesod 陣営が開発しているから安心感があるし、バックエンドが fast-logger なので速度も信頼できる。 ただ (自分の調べ方が悪いのかもしれないが) ちょっと自分の用途には機能が足りなかった。 具体的には以下の機能: ログにタイムスタンプを付記したい。 ロガーに名前をつけたい。 ファイルサイズか日付でログローテーションしたい。 Katip という別のロガーライブラリは機能が豊富のようなので今回はそれを試してみる。 (この記事のHaskell環境: lts-6.23) Katipのおそらく最小の構成 とりあえず動かしてみる。 {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #-} modu

    HaskellのロガーKatipを試す - syocy’s diary
  • Hakyll, stack, Travis CI, Github でブログを管理する

    やった事をまとめると、以下の通り。 StackでHaskellのパッケージ(Hakyll)を管理する。 markdownでブログを書き、Hakyllでhtmlファイルに変換する。 実際には、TravisがHakyllを使ってコンパイルしhtmlファイルに変換する。 ソースファイルはGithubの公開リポジトリで管理し、Github Pagesで公開する。 できたのがブログ。 Stack Stackは、 Haskellのパッケージをビルドしたりインストールしたりするツールです。 tanakhさんによる 紹介記事をきっかけに知りました。 Haskell力のない自分にはcabal hellを乗り越えられる自信が無かったという理由と、 タイムリーなので使ってみたいという理由から選択してみました。 Hakyll Hakyllは、 Haskellによる静的htmlページ生成ツールです。 Rubyによ