タグ

qiitaとhaskellに関するnabinnoのブックマーク (18)

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

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

    Haskellのビルドツール"stack"の紹介 - Qiita
  • Stackをhaskell-modeで使ってみよう - Qiita

    はじめに Stackをhaskell-modeで使えるように設定してみました。 StackはHaskellのビルドツールです。インストールはこちらを参照しました。 haskell-modeはEmacsのプラグインです。インストールはパッケージ管理ツールのpackage.elを使いました。 ここでは設定と簡単な使い方を紹介します。 設定 .emacsなどに下記のソースコードを追加します。 ;; フックを設定 (add-hook 'haskell-mode-hook 'haskell-indentation-mode) (add-hook 'haskell-mode-hook 'interactive-haskell-mode) (add-hook 'haskell-mode-hook 'haskell-decl-scan-mode) (add-hook 'haskell-mode-hook

    Stackをhaskell-modeで使ってみよう - Qiita
  • 7つの言語 7つの世界 ~第8章 Haskell 1日目~ - Qiita

    はじめに 最近関数型プログラミングが流行していることと色々な言語に触れてみたいことから「7つの言語 7つの世界 -オーム社-」を読んでみることにした。 書では最初から読み進めることを推奨しているが、私は第6章のErlangから読み進め、今日からはHaskellに進む。 Haskellは書の中では、唯一の「純粋関数型言語」である。これを2つ目に選んだ理由としては、最近自分の友人が使っていたことと、下記の記事でPythonからの移行としても取り上げられていたことを発見したことである。 Haskellで生産性を高める-Pythonからの移行 | プログラミング | POSTD 環境構築 Haskellにはコンパイラが必要なので、コンパイラの定番GHCとパッケージ管理ツールのCabalをbrewでインストールした。 これだけで環境構築は終わり。使い方はまたやりながら試すけど、色んなオプションが

    7つの言語 7つの世界 ~第8章 Haskell 1日目~ - Qiita
  • 「Haskell入門ハンズオン!」事前資料 - 1/3 - Qiita

    Haskell概要 はじめに この記事は2017年7月15日に開催したHaskell入門ハンズオン!のための事前資料です。同記事を2018年11月3日のHaskell入門ハンズオン! #4のための事前資料としても使わせていただきます。あつかう内容はHaskellの処理系の導入と、Haskellの概要の説明です。この資料を完全に理解する必要はありませんが、処理系の導入をして、Haskellがどのような言語であるかを、ざっと目を通し、実行例などは1度、実際に手を動かして打ち込んでみてください。 「Haskell入門ハンズオン!」事前資料の一覧 概要 処理系の導入と対話環境 やってみよう 質問など 事前資料を読んでいくうえで生じた質問は、teratailでHaskellタグをつけて質問していただけると幸いです。あるいはfunpaala@gmail.comに、メールで質問していただくのでも、かまい

    「Haskell入門ハンズオン!」事前資料 - 1/3 - Qiita
  • Haskell Stack とは何をするツールなのか - Qiita

    この記事では、Haskell Stack についての初歩的な説明をします。 (2022-11-20補足)現在は、GHC や Stack のインストールには GHCup を使うのが主流になっています。 はじめに いま Haskell の開発環境を導入するといえば Stack だろうと思います。 これから Haskell の勉強を始めようと思うなら、まずは Stack の使い方を覚えることになります。 Stack は便利なツールなのですが、個人的な印象としては、最初のとっつきが悪いと思っています。 僕が初めて Stack に接したときは、「これはいったい何をするツールなのだろう」とモヤモヤしました。 ひとつのツールでいろいろな役割をこなすので、かえって何のツールか分からないのです。 また、コマンドを実行しても、実際に何が起こっているのかがよく分からないのもモヤモヤする点でした。 そういう初歩的

    Haskell Stack とは何をするツールなのか - Qiita
  • stack install package しても stack buildでCould not find moduleが出る - Qiita

    . . . description: Please see the README on Github at <https://github.com/githubuser/qiita#readme> dependencies: - base >= 4.7 && < 5 - http-client # 追加 library: source-dirs: src . . .

    stack install package しても stack buildでCould not find moduleが出る - Qiita
  • 「混ぜられない数」をHaskell/GHCの型を使って手軽につくる

    1. はじめに Haskell/GHCの型システムを使って、「混ぜることのできない数」のグループを手軽に作る方法を紹介します。 Haskellの基的な機能と、GHC拡張を1つだけ使用しています。 なお、ここで紹介する方法は、Don Stewartさんが昔に、"Haskell in the Large"という資料(現在、オリジナル資料はリンク切れ)で紹介していたものを元にしています。 また、記事で出てくるnewtype宣言やphantom型や数値型については、以下の記事などが参考になります。 すごいHで見落としがちだが実は重要な機能:newtype 当はすごい newtype で、出たー!幽霊型だー!(Phantom Type) Haskellらしさって?「型」と「関数」の基を解説! (数値型と型クラスについて簡単に) では、順に試しながら機能を追加していきます。 最初に基的な型

    「混ぜられない数」をHaskell/GHCの型を使って手軽につくる
  • サンクの構造を見る - Qiita

    GHCでは評価戦略がデフォルトで遅延評価ですが、このために引数に関数を適用しただけでは評価自体は行われずに、サンクとして扱われます(ここではinliningやstrictness-analysis等の最適化は考慮しません)。 サンクとは評価を進めるための情報は揃っているけども(遅延評価のために)評価を進めないままに扱うための構造です。GHCでのサンクの実態は引数のないクロージャです。 そしてこのサンクの中身はHaskell上から確認する手段はありません... と思っていたのですが、最近1は中身を確認することができる様ですね。 http://hackage.haskell.org/package/ghc-heap-view ghc-heap-viewはサンクを含むHeap上の構造を確認するためのライブラリです。 前提条件 ここでは以下の環境で動作確認を行っています。 MacOS ghc-8.

    サンクの構造を見る - Qiita
  • なぜHaskellを学ぶと良いか - Qiita

    なぜこれを書くのか 私がQiitaに投稿した記事を見た方から、メールが届きました。 プログラミング言語のHaskellを勉強し始めたものの、難しくてやめようかと考えているそうです。 その気持ちも非常によく分かります。 すごいHが出版されてから年月も経ち、それなりに勉強しやすくなったとはいえ、お世辞にもHaskellを学ぶ環境が整っているとは言えません。 私はHaskellで製品開発をする会社を保守運用していたことがあり、また自分自身もHaskellでプログラムを書いています。 また、Haskellを普及させるべく、「こわくないHaskell入門」という記事を書いたこともあります。 これらの経験を踏まえ、この機会にあらためて「なぜHaskellを学ぶと良いか」についてまとめたいと思い立ちました。 Haskellについてまだよく知らない方が、入り口として読める内容を目的としているので、できる

    なぜHaskellを学ぶと良いか - Qiita
  • 正格評価と遅延評価(基本編)

    今回からスペースリークに関することに踏み入ります。 まずは正格評価と遅延評価の動作についてです。 型と動的な挙動 まず型についてはここでは触れません。Haskellの型は非常に複雑なものです。型についてメンタルモデルを構築する際もλ計算のシンプルさを念頭におくと非常に理解しやすいとは思いますが、ここでは扱いません。 なので型クラス(type class)や型パラメータ(parametric polymorphism)や型関数(type function)といったものは出てきません。 昔僕も静的な箇所と動的な箇所の違いが見えなかった感覚を少しだけ覚えていますが(スクリプト言語しか書いていないと陥りそうです)、静的な箇所とはプログラムを動作させなくても決定できるところを指すとしましょう。慣れればちゃんと項レベルと型レベルの違いはきちんとわかるものです(ここでは型レベルと項レベルの違いについても

    正格評価と遅延評価(基本編)
  • HaskellでTensorFlow、を対話的に試してみる - Qiita

    はじめに TensorFlowのHaskell用バインディングがリリースされています。 格的に使用する場合はコンパイル方式を用いると思いますが、記事では、環境に慣れるために対話的に使用する方法について簡単に紹介します。 以下では、Linux(ubuntu 16.04LTS 18.04LTS)を用いた例を紹介します。 なお、Dockerはインストール済みであることを前提としています。 記事は、2017年8月時点 2018年8月時点の内容です。TensorFlowのHaskell用バインディングは開発中のため、今後、使い勝手が変わると思いますので注意してください。 以下は参考資料です。 * Haskell bindings for TensorFlow * Starting out with Haskell Tensor Flow 環境の準備 1. stackコマンドのインストール st

    HaskellでTensorFlow、を対話的に試してみる - Qiita
  • 純粋関数型データ構造(8)〜Banker's Queue〜

  • 【 キャリア × 関数型言語 】金融業界 における 関数型言語 導入実績 ~ Haskell, F#, Scala も採用されているが、LexiFi社 & Jane Street社 の成功 が 背景にあり、 OCaml の 存在感 が 強い - Qiita

    【 参考 ウェブサイト 】 小笠原 啓(2015/05/31)「函数プログラミングのエッセンスと考え方」 サルノオボエガキ(2006/08/24)「MLFi ‐ 金融商品を書くための関数型言語」 OCaml.jp 活用事例 金融業界では、Haskell や F#, Scala も採用されているが、過去2社の成功実績から、OCaml の占める比重が大きい 【 2つの成功実績 ~LexiFi社 & Jane Street社 】 1.LexiFi社(仏) 金融派生商品 店頭取引(OCT)契約情報 記述特化型言語(DSL)「MLFi」 の 市場化 成功 サルノオボエガキ(2006/08/24)「MLFi ‐ 金融商品を書くための関数型言語」 ITソリューションフロンティア 2005年3月号 海外便り 松下 樹(野村総合研究所)「関数型言語による金融アプリケーション」 Hatena::Diary O

    【 キャリア × 関数型言語 】金融業界 における 関数型言語 導入実績 ~ Haskell, F#, Scala も採用されているが、LexiFi社 & Jane Street社 の成功 が 背景にあり、 OCaml の 存在感 が 強い - Qiita
  • 状態変化なしに効率的な辞書を実装する重み平衡木 - Qiita

    はじめに キーを指定して値を検索したいことはよくある。このような操作のために作られたデータ構造を辞書や連想配列と呼ぶ。多くの言語では辞書としてハッシュテーブルを使う。ハッシュテーブルの時間効率は「いちおう」O(1)ということになっている。しかし、ハッシュテーブルは「状態変化」を前提としたデータ構造だ。ハッシュテーブルは挿入・削除の操作のたびに変化し続ける。 状態変化があるということはコードの実行順序によって値が変化する可能性があるということだ。状態変化による結果を完全に理解することは人間の得意とするところではない。すぐに人間の思考はごちゃごちゃになってしまう。そしてよく訓練されたHaskellerなら非質的な状態変化を「美しくない」と感じるはずだ。 リストによる辞書 そうだリストを使おう。リストを使えば状態変化にわずらわされることはない。キーと値のタプルのリストにMapという別名をつけて

    状態変化なしに効率的な辞書を実装する重み平衡木 - Qiita
  • 代数的データ型とパターンマッチによる言語比較:Koka,Rust,Haxe,Swift,Elm,PureScript,Haskell,OCaml,ReasonML,ReScript,Kotlin,Scala,Dotty,Ruby,Julia,TypeScript - Qiita

    代数的データ型とパターンマッチによる言語比較:Koka,Rust,Haxe,Swift,Elm,PureScript,Haskell,OCaml,ReasonML,ReScript,Kotlin,Scala,Dotty,Ruby,Julia,TypeScriptScalaKotlinHaxeRustSwift

    代数的データ型とパターンマッチによる言語比較:Koka,Rust,Haxe,Swift,Elm,PureScript,Haskell,OCaml,ReasonML,ReScript,Kotlin,Scala,Dotty,Ruby,Julia,TypeScript - Qiita
  • Scala ラムダ超入門 - Qiita

    Scalaの文法に慣れて来た方を対象に、ラムダ式や高階関数を使って関数を取り回す方法を説明します。カリー化や部分適用も取り上げます。いわゆる関数型言語らしい機能です。 この記事は以下の記事のScala版です。故に、結構無理しているところもあります。 Haskell 超入門 練習の解答例は別記事に掲載します。 ラムダ式 今まで取り上げて来た文法では、関数の引数を左辺で定義していました。

    Scala ラムダ超入門 - Qiita
  • HerokuにHaskellのアプリを公開する - Qiita

    2020年にはもっと便利な方法があるのでこちらの記事を参照してください HerokuにHaskellで作ったWebサービスを公開する簡単な方法 - Qiita Haskell on Herokuを使ってHerokuにHaskellのアプリを公開する方法を残しておきます。Haskell on Heroku は Halcyonを利用したHerokubuildpack です。 Haskellのアプリは依存ライブラリのビルドに時間がかかってしまい、Herokuへデプロイする時は15分制限に簡単に引っかかってしまうので工夫が必要です。Halcyonは別のサーバー(Amazon S3)に環境を保存しておくことでインクリメンタルビルドを可能にしてくれます。 始めに新しくHerokuのアプリを作り buildpack を設定しておきます。 $ heroku create -b https://gith

    HerokuにHaskellのアプリを公開する - Qiita
  • 継続モナドによるリソース管理 - Qiita

    継続モナドって何に使うんだ問題に対する一つの例。 リソース管理の問題 プログラミングをやっていると必ずまとわり付いてくるのがリソース管理の問題です。ここで指すリソースというのは、ファイルのハンドルだとか、ソケットだとか、排他処理のためのロックだとか、グラフィックのハンドルだとかそういう話で、GCのない言語だとメモリの管理もこれに含まれるでしょうか。 言うまでもなく、リソースを確保した後はしかるべきタイミングで確実に解放してやる必要があります。しかし往々にして、現実のプログラムではリソースの解放漏れが発生してしまいます。単に解放するコードを書き忘れると言うのが一番単純でしょうもない理由ですが、それでも、C言語のようにリソース解放のための特別な仕組みを持たない言語では、これを徹底するのも結構骨の折れることだったりします。それはともかく、もう少し高尚な悩みとしては、例外との組み合わせで発生する解

    継続モナドによるリソース管理 - Qiita
  • 1