タグ

haskellに関するmather314のブックマーク (23)

  • 経験5年のHaskellユーザがScalaを仕事で半年使ってみた

    haskell-scala-java ちょっと前までScalaを書いていたので、 Haskell好きな人がScalaを書いた感想を書きます。 タイトルは経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blogの模倣です。 あくまで1ユーザの感想です。 Scalaに慣れてしまうと違和感を忘れてしまうと思ったので、当時箇条書きで雑にメモしていたものを参照して書いています。 逆にScala使いがHaskellを知るメモに役立つかもしれません。 Haskell歴 when: 2013年から知って学び始めましたが、格的に使い始めたのは2015年からで、5年ほど使っています where: どの言語を使っても良くて新しい言語を学ぶ必要がなければ基的にHaskellを使っています what: 趣味OSSプロジェクトの大半 現在一番スターもらっ

    経験5年のHaskellユーザがScalaを仕事で半年使ってみた
  • 君の手で作るモナドは怖くない - builderscon tokyo 2019

    Abstract セッションの目的は、ずばり モナド (monad) に対する 初心者の心理的障壁を取り除くこと です。モナドはプログラミング言語 Haskell と関連して言及されることが多く、世間では何か得体のしれない難解な概念だというイメージが先行しています。しかし、実際にはどのプログラミング言語にもある「処理」の概念を一般化しただけで、プログラマにとっては顔見知りの相手に過ぎません。 セッションでは、実際の使用場面から逆算してモナドを再発明することでその必然性を体感し、必要以上に強調された神秘性を引きはがすことを目標とします。受講後には、セッション内で扱わなかった Haskell の基文法を少し補うことで、モナドを利用した単純なプログラムならすぐに書けるようになるでしょう。 そもそも、なぜモナドや、それを用いる Haskell にはこんなにも怖ろしげなイメージが先行しているの

  • GHC言語拡張の一覧 - Qiita

    Haskellのデファクトスタンダードな処理系であるGHCには,Haskellの言語仕様を補うような形で,GHC拡張と呼ばれる言語拡張を用意している.これらはちょっとした便利な糖衣構文を用意するようなものから型システムに深刻な影響を及ぼすもの,次期仕様策定までの前準備のものまで様々ある.いくつかの拡張はデフォルトで有効になっている. 言語拡張は,次の3つの方法で制御できる. すべての言語オプションは,コマンドラインフラグ-X ...(たとえば,-XTemplateHaskell)でオンになり、フラグ -XNo ...でオフになる.(たとえば,-XNoTemplateHaskell) GHCによって認識されている言語オプションは,LANGUAGEプラグマ(たとえば,{-# LANGUAGE TemplateHaskell #-})を使用して有効にすることもできる. stack (hpack)

    GHC言語拡張の一覧 - Qiita
  • HaskellのWeb系ライブラリ紹介 - iLog

    はじめに こんにちは、ishiy(@ishiy1993)です。 この記事はCAMPHOR- Advent Calendar 2016の11日目の記事です。 すでにHaskell Advent Calendar 2016の7日目の記事でHaskellのライブラリ紹介がありましたが、 Web関係に特化することで差別化をはかります。 ときどき「HaskellでもWebまわりできるんですね!?」というのを聞くのでいろいろなライブラリあるよというアピールをしたい。 以下では、僕が使用したことのあるライブラリを中心にサーバー、クライアントそれぞれを紹介していきます。 サーバー Webサーバー wai warp まずサーバーサイドの基礎になっているライブラリを紹介します。 waiはWeb Application InterfaceでApplicationという型を定義しています。 これが下で紹介するWA

  • なぜ我々はHaskellを使うのか

    gistfile1.md スタートアップ企業 Silk が、Haskellを採用した理由。 http://engineering.silk.co/post/31920990633/why-we-use-haskell As a newly started company, we have a lot of technical decisions to make. One of the important ones is the choice of a programming language. Since we’re building a web application, this goes for both the client (i.e. the web browser) and the server. 新しく始めた会社として、我々はたくさんの技術的決定を行わなければなりません。中でも

    なぜ我々はHaskellを使うのか
  • 実践編!Haskellらしいアプリケーション開発。まず型を定義すべし【第二言語としてのHaskell】 - エンジニアHub|Webエンジニアのキャリアを考える!

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

    実践編!Haskellらしいアプリケーション開発。まず型を定義すべし【第二言語としてのHaskell】 - エンジニアHub|Webエンジニアのキャリアを考える!
  • 新卒3年目のHaskell好きのScala使いが、はてなでテックリードになるまでの道 - エンジニアHub|Webエンジニアのキャリアを考える!

    新卒3年目のHaskell好きのScala使いが、はてなでテックリードになるまでの道 「若手エンジニア、どんな活躍してますか?」の第7回目は、はてなが手がける、サーバー監視サービス「Mackerel」の開発エンジニアにお話を聞きました。リモートでありながら、抜群の存在感を発揮する先輩の背中を、超優秀な後輩はいかにして追いかけたのでしょうか。 はてなといえば、ブログサービス、ソーシャルブックマークサービスを展開する企業として知られていますが、サーバー監視サービス「Mackerel」も主力プロダクトのひとつ。今回お話を伺ったお2人も、Mackerelの開発メンバーです。そのうちの一人、2017年4月にMackerelのテックリードになったばかりの濵田さんは2015年入社の若手。愛知からリモートで働く、前テックリードの辻川さんの背中を、ディスプレイ越しに見ながら実績を積み上げてきました。 はてな

    新卒3年目のHaskell好きのScala使いが、はてなでテックリードになるまでの道 - エンジニアHub|Webエンジニアのキャリアを考える!
  • 型クラスに関するここ数日の議論

    ここ数日で型クラスに関する議論が何故かもりあがっていたので、一通りひろってまとめてみました。型クラスというお題で色々なところで議論が同時多発していた感じなので、全体の流れとかはあまりないです。

    型クラスに関するここ数日の議論
    mather314
    mather314 2017/05/30
    色々な視点やニーズによる捉え方はあると思うんだけど、僕は「型クラスとインターフェースは別のもの」と思っておいた方がいいと思う。
  • 資金力のない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言語のような静的な型付き言語に慣れていれば、役に立つでしょう。 型クラスについての概要/要約 型クラス

  • 【型レベルWeb DSL】 Servantの紹介

    Note 2018-07-28: 最新の lts-12.2 で動くようにサンプルコードを修正しました。 Haskellは型の表現力がとても高い言語です。 型をうまく使えば意図しないプログラムがコンパイルできないように設計することが出来ます。ServantはWebアプリがどのように振る舞うかを型で設計するためのDSLです。APIと対応した型を作ることで間違いが少なくなるだけでなく様々なボイラープレートを型から生成することも出来ます。特殊な外部ファイル等は必要無く全てHaskellの文法で完結します。まさに型の表現力が高いHaskellでしか作れないライブラリです。 Servantの特徴としてチュートリアルでは以下の4つが挙げられています。 concision (簡潔である) flexibility (汎用的・柔軟性がある) separatation of concerns (関心の分離) t

    【型レベルWeb DSL】 Servantの紹介
  • Haskellライブラリ所感2016 - syocy’s diary

    (これは Haskell Advent Calendar 2016 の7日目の記事です) 今年使ったり調べたりした Haskell ライブラリを広く紹介していく企画です。 あくまで今年使ったものなので新しいものばかりではないです。 また記事の性質上、紹介するものが偏っていてもご容赦ください。 Hackage にはすごい数のライブラリが登録されていて、 頼もしいことですが目が回りそうにもなってしまいます。 この記事が Haskell のライブラリを調べる上での指針になったら幸いです。 なおこの企画と方向性が似ているものとして State of the Haskell ecosystem ( 2016年2月版 ) があります(英語)。 これは Haskell を取り巻く環境を知る上で非常によいドキュメントです。 ただ各ライブラリについては名前を挙げるだけにとどめられています。 この記事ではもう

    Haskellライブラリ所感2016 - syocy’s diary
  • GitHub - ekmett/trifecta: Parser combinators with highlighting, slicing, layout, literate comments, Clang-style diagnostics and the kitchen sink

    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 - ekmett/trifecta: Parser combinators with highlighting, slicing, layout, literate comments, Clang-style diagnostics and the kitchen sink
  • Parsing expressions and statements - HaskellWiki

    We use the Parsec library to parse a small grammar of expressions and statements. The main purpose is to showcase makeTokenParser and buildExpressionParser, which cover a large class of common applications. We will use these modules: > import Control.Applicative((<*)) > import Text.Parsec > import Text.Parsec.String > import Text.Parsec.Expr > import Text.Parsec.Token > import Text.Parsec.Language

  • Stackを使って楽しくHaskellスクリプティング - Qiita

    今までいまいちモチベが上がらなかったHaskellでスクリプトを書くというのが、急に現実的になってしまったので、紹介します。 Haskellでスクリプティングする上での問題点 Haskellはもともと簡単なテキスト処理を書きやすいプログラミング言語ではあるのですが、標準で提供されているライブラリはあまり多くないので、必要に応じてコミュニティーパッケージを導入しなければその力を存分に発揮することができません。 通常のパッケージなら、cabalに依存関係を書けばパッケージマネージャで自動的に(コケることもありますが、理想的には)管理できるのですが、シェルスクリプトやPerl、あるいは最近ならPythonでやるような、コードを直接インタプリタで実行するような形のコードでは、そのような依存関係を自動で解決することは難しく、その上、仮にやろうとしたところで、いつまでもその依存パッケージが新しいコンパ

    Stackを使って楽しくHaskellスクリプティング - Qiita
  • PureScript

    A strongly-typed functional programming language that compiles to JavaScript Benefits Compile to readable JavaScript and reuse existing JavaScript code easily An extensive collection of libraries for development of web applications, web servers, apps and more Excellent tooling and editor support with instant rebuilds An active community with many learning resources Build real-world applications us

    mather314
    mather314 2016/10/06
    HaskellライクなAltJS
  • Haskellの単体テスト最前線 - あどけない話

    この記事の最新版は、githubで管理されています。 これはHaskell Advent Calendar 2012の5日目の記事です。 Haskellで作成したパッケージに対して、単体テストを書くための最新情報をお届けします。 要約 要点は4つです。 利用者に見せたい振る舞いは、doctest で書く 利用者に見せたくない振る舞いは、hspec で書く テストを自動化するフレームワークとしては Cabal を使う doctest でも hspec でも、純粋なコードに対しては、できるだけ QuickCheck などの性質テストを書く この記事で一番伝えたいのは、3) です。例題としては、Base64 という符号化を取り上げます。Base64 は知っていると仮定して話を進めますので、知らない人はあらかじめ Wikipedia の Base64 の説明でも読んで下さい。 この記事で利用するコ

    Haskellの単体テスト最前線 - あどけない話
  • Haskellのビルドツール"stack"の紹介 - Qiita

    Stackとは? つい先日のことですが、Stackage界隈からstackというツールがリリースされました。リリースされたとはいえ、開発され始めたのがちょっと前のことですし、現在も盛んに機能が追加されているので、絶賛開発中であるとかそういったほうがいいかもしれません。 まだ開発の始まったばかりのツールなのに、なぜこんな紹介記事を書こうと思ったのかというと、このツールがHaskellの開発において極めて有用になることが確定的に明らかであって、すでに荒削りながらも、大変便利に使えているからなのです。そしてここで紹介することで、多くの読者の方に興味を持ってもらって、それで開発がさらに盛り上がっていくと嬉しいなあと、そう思った次第であります。 なお、stackの開発が始まる少し前に、stackage-cliを始めとするいくつかのツールがリリースされましたが、今後開発はstackに一化されるような

    Haskellのビルドツール"stack"の紹介 - Qiita
  • Becoming Productive in Haskell

    Sometime recently I became proficient enough in Haskell to be productive, and I wanted to capture some of my thoughts on the learning experience before it got too far away. I do most of my web prototyping in Haskell now, though I still regularly use and enjoy Python. Data First This is more of a thought on moving from a dynamic language to a static language, but in Haskell the structure of your da

    Becoming Productive in Haskell
  • Haskellで生産性を高める-Pythonからの移行 | POSTD

    (注記:11/30、いただいた翻訳フィードバックを元に記事を修正いたしました。) 最近、Haskellでも生産性の高い作業ができるほどに、この言語を使いこなせるようになりました。定期的にPythonを使いもしますが、今ではWebプロトタイプ作成のほとんどをHaskellで行っています。それで、時間が経ってしまう前に、この言語の学習経験を通じて考えたことなどをまとめたいなと思っています。 データファースト これはどちらかというと動的言語から静的言語への移行に関しての考えなのですが、Haskellのデータ構造は、ほとんどの場合、データ宣言と型シグネチャで提示されるのに対し、Pythonの場合、おおむねコードによって暗黙に定義されます。 Pythonの関数について私が初めて抱いた考えは、「コードに何が書かれているか?」でしたが、Haskellでは、「データはどう見えるか? この関数は___を受け

    Haskellで生産性を高める-Pythonからの移行 | POSTD