タグ

Haskellに関するayu-mushiのブックマーク (15)

  • Just $ A sandbox

    もう5億ヶ月前の話になるのだけどアレ活が終わっていた これによってとりあえず卒業後の進路は確保できたので路頭に迷ったりニートになる必要はなくなったのでアンシンアンシン 来年から東京の某企業で仕事をするらしい。 何するか具体的にはよく知らないんだけど開発したりしなかったりするんじゃなかろうか〜と思ってる。少なくとも計算機科学を修めたことが無駄にはならない仕事のはず(そうであって欲しい) アレ活の話も少しだけしておくと、理論計算機科学を使いたい(不可能っぽい)って言いながらやっていて、最終的には設計・フレームワークの開発・堅牢性チェック(品質保障)的なお仕事ないですか〜みたいな感じであれこれ言っていた。 あとScala求人は意外と多くて、あぁScalaって結構業務で使われてるのか。そりゃいい強みだなぁ(Haskellと比べて)と思ったり、あるいはScala求人だからと言ってそこの会社に計算機科

    Just $ A sandbox
  • HakyllとpandocとMighttpdでサイトを作った話 - 純粋関数空間

    このページについて ページのフッタに書いてあるので、お気付きの方もいらっしゃるかと思いますが、 このページは Hakyllと Pandocと Mighttpdにて運用されています。 完全なソースコードを https://github.com/tanakh/tanakh.jp から参照できます。 HakyllとはHaskellによる静的ページ生成ツールで、 Jekyllにインスパイアされて作られたものだそうです。 JekyllがRubyによって書かれ、Rubyによってページの構造を記述するのに対して、 HakyllはHaskellによって書かれ、Haskellによってページの構造を記述します。 Pandocとはいろいろなドキュメントフォーマットのコンバータです。 Haskellで書かれています。さすがにもうHTMLを手で書きたくはない、 かついろいろなブログの独自のフォーマットなんて覚えてい

  • HerokuにHaskellで作ったWebサービスを公開する簡単な方法 - Qiita

    趣味で作ったWebアプリをHerokuにデプロイしたのですが、4年前にまとめたHerokuにHaskellのアプリを公開するに比べてかなりデプロイが簡単になっていたので設定方法をまとめておこうと思います。 GW暇だったので簡単なバーチャルオフィスみたいなアプリを作りましたー!バックエンドはHaskellとServantで作ってます✌/ lotz84/remote-househttps://t.co/VWPRPtMN87 pic.twitter.com/CbkZ0IpMss — lotz (@lotz84_) May 4, 2020 設定方法 結論、Dockerを利用したデプロイがとても楽です。 事前にHeroku側のアプリを新規作成しデプロイするWebサービスを用意しておきましょう。ここではweb-serviceという名前のプロジェクトを作成したと仮定しますので以下のファイル名などは適宜置

    HerokuにHaskellで作ったWebサービスを公開する簡単な方法 - Qiita
  • https://www.tweag.io/posts/2020-01-16-data-vs-control.html/

  • 製造業モノづくりを最先端のAI技術でサポート | 株式会社クロスコンパス

  • A Vim + Haskell Workflow

    A Vim + Haskell Workflow This post is out of date and has been updated for modern workflow.This page is left for posterity. Hoogle Hoogle is a Haskell type search engine which can be used online or installed locally.

  • GHCの線形型プロトタイプを試すだけ - syocy’s diary

    GHCに線形型を導入すると以下のような良い事があるらしい。 リソース安全性: ファイルハンドル、ソケット、DBコネクションのようなリソースについて、これらを提供するAPIの設計者が安全な使用を強制できる。リソース解放後のアクセス、二重解放、解放忘れを防止することができる。 レイテンシ: リソースAPIの実装をうまくやるとoff-heap(GCの対象外)でリソースを確保・解放できる。GC対象が少なくなることによりGCによってプログラムが停止する時間を減らせる。 並列性: 過剰な直列化を強要しない。リソース安全性を保ちつつもできる限り並列化できる。 詳しくはproposal。 この記事では線形型GHCのプロトタイプ実装および線形型ファイル操作ライブラリのプロトタイプ実装を試してみる。 ここで紹介するものが正式リリースで変更されている可能性は大いにある。 なおcabalのnew APIを使うのが

    GHCの線形型プロトタイプを試すだけ - syocy’s diary
  • 48時間でSchemeを書こう - Wikibooks

    Web上にあるほとんどのHaskellチュートリアルは言語についてのマニュアルのような教え方をしようとしているようです。それらには言語の文法、概念が少し載っていて、読者に対話環境でいくつかの簡単な関数を作るように指示します。よく機能する有用なプログラムの書き方は大抵最後にまわされるか、そもそも省かれていたりします。 このチュートリアルは違う方針を取ります。コマンドライン引数解析から始めて、完全に機能するR5RS Schemeのかなり大きなサブセットの実装まで進みます。道すがら、Haskellの持つI/O、mutable state、dynamic typing、エラー処理、そして構文解析機能を学びます。このチュートリアルを終える頃には、あなたはHaskellとScheme両方がかなり良くわかるようになっているはずです。 このチュートリアルの対象読者は主に以下の2種類です。 LispかSch

  • The Has Type Class Pattern | HackerNoon

    Too Long; Didn't ReadThe <code class="markup--code markup--p-code">Has</code> type class patterns are simple but <a href="https://hackernoon.com/tagged/surprisingly" target="_blank">surprisingly</a> useful. I’ll walk through some examples. The Has type class patterns are simple but surprisingly useful. I’ll walk through some examples. Use Case 1: Collecting all Images Imagine you are working on a

    The Has Type Class Pattern | HackerNoon
  • 文脈自由文法(CFG)と解析表現文法(PEG)をHaskellのモナドで説明する話 - 簡潔なQ

    文脈自由文法(Context Free Grammar) と 解析表現文法(Parsing Expression Grammar) は記法が似ているものの、その性質は大きく異なっている。しかし、以下のようにHaskellのモナドを用いて、左再帰的でない文脈自由文法をそのままパーサーコンビネーターとして変換すると、PEGはList monadをMaybe monadとして置き換えたものとして説明できる。 -- CFGとPEGの関係を List vs. Maybe として説明するサンプル import Control.Monad import Control.Monad.State -- 型の説明 : StateT String m a -- StateT String ... 構文解析の残りの文字列を記憶している。 -- m ... 正否をあらわす。ListにするとCFG, Maybeにする

    文脈自由文法(CFG)と解析表現文法(PEG)をHaskellのモナドで説明する話 - 簡潔なQ
  • Namespace Haskell

    Haskellにモジュールシステムが欲しすぎたのでNamespace Haskellとして提唱したい。 主な機能 open import Agdaにもある機能で、importをimport(モジュール読み込み)とopen(現在のコンテキストに名前を公開)に分割する. import M とすると, M.func によってモジュールMの関数funcにアクセスできる open M とすると, それを指定したブロックでMの関数を修飾子なしでアクセスできる open import M とすると, import M; open M の意味になる(現在のHaskellのimport) openをwhereブロック内で宣言することで、一部でしか使わないimportをあっちこっちで展開するのを防げる。 public export 現在のHaskellではモジュール宣言時に module M(..) wher

  • コモナドを使った抽象化の威力をライフゲームで試してみた - Qiita

    class Functor m => Monad m where return :: a -> m a (>>=) :: (a -> m b) -> m a -> m b join :: m (m a) -> m a join = (>>= id) k >>= m = join $ fmap k m extract は return と、extend は >>= と、duplicate は join と、それぞれなんとなく反対になってるような気がしますよね?(m と w も上下反対の対応がありますねw) コモナドの感覚を掴むために具体的な実装を見てみましょう。 -- | List Zipper data Z a = Z [a] a [a] left, right :: Z a -> Z a left (Z (l:ls) c rs) = Z ls l (c:rs) right (Z ls c

    コモナドを使った抽象化の威力をライフゲームで試してみた - Qiita
  • 継続モナドによるリソース管理 - Qiita

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

    継続モナドによるリソース管理 - Qiita
  • Comonadic Collision Resolution :: Reasonably Polymorphic

  • Real World Haskell

    Why functional programming? Why Haskell? 1. Getting started 2. Types and functions 3. Defining types, streamlining functions 4. Functional programming 5. Writing a library: working with JSON data 6. Using typeclasses 7. Input and output 8. Efficient file processing, regular expressions, and file name matching 9. I/O case study: a library for searching the filesystem 10. Code case study: parsing a

  • 1