タグ

haskellとHaskellに関するrydotのブックマーク (379)

  • https://qiita.com/hiyakashi_/items/1c1ec5445e7586a2fa06

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

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

    継続モナドによるリソース管理 - Qiita
  • Haskellのビルドツール"stack"の紹介 - Qiita

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

    Haskellのビルドツール"stack"の紹介 - Qiita
  • GitHub - jaspervdj/psqueues: Priority Search Queues in three different flavors for Haskell

    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 - jaspervdj/psqueues: Priority Search Queues in three different flavors for Haskell
  • Two visualization tools

    The document describes two visualization tools: splot and tplot. Splot creates state plots from log files, showing states of different actors over time. Tplot creates time plots, showing how quantitative metrics change over time. Both tools take log files as input, use simple text processing like awk to extract time and actor/metric information, and output interactive visualizations without depend

    Two visualization tools
  • [入門]関数プログラミング―質の高いコードをすばやく直感的に書ける! 記事一覧 | gihyo.jp

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    [入門]関数プログラミング―質の高いコードをすばやく直感的に書ける! 記事一覧 | gihyo.jp
  • 関数型プログラミングとオブジェクト指向の抜き差し可能な関係について整理して考える - モナドとわたしとコモナド

    Googleで適当に検索すると とズラリと出てくる。 オブジェクト指向 v.s. 関数型プログラミング 関数型とオブジェクト指向という一見相反するプログラミングパラダイムの併用について理解した プログラマが知るべき97のこと/関数型プログラミングを学ぶことの重要性 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 関数型プログラミングとオブジェクト指向の抜き差しならない関係について整理して考える とそれなりに参考になりそうな情報はあるものの、無駄に複雑化されたオブジェクト指向をストローマンにするような記事ばかり(それだけ今までのオブジェクト指向にみんなうんざりさせられているのだろう)で、そろそろきちんと自分自身「関数型プログラミングとオブジェクト指向の切り離され方」についてはっきりさせておきたい、と考え、概念整理した結論を書きます。 まず端的な結論 結論を

    関数型プログラミングとオブジェクト指向の抜き差し可能な関係について整理して考える - モナドとわたしとコモナド
  • [翻訳] 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
  • Arrow化pipeはFRPの夢を見るか? - Qiita

    askP = P.constructT P.kleisli0 $ do lift $ putStrLn "情報を入力して下さい" forever $ do lbl <- P.await lift $ putStr (lbl ++ ": ") ct <- lift $ getLine P.yield (lbl, ct) registerP = do r <- runKleisli (P.run askP) ["Zip code", "Address", "Name"] print r ほとんど間違い探しのレベルですね。真似して作ったので仕方ない。machinecell側にだけkleisliという見慣れない名前が見えますが、これは型合わせだと思って無視して頂いてOKです。 上のコードは、ちょっと変則的ですが、pipe系の汎用性をデモするために「データの中間加工時に副作用を起こす処理」を実装して

    Arrow化pipeはFRPの夢を見るか? - Qiita
  • Listモナドで非決定性計算 - ももいろテクノロジー

    Listモナドを使うと、SICPのamb評価器が行うような非決定性計算ができる。 たとえば、ピタゴラス数を列挙するコードは次のように書ける。 -- ptriples.hs import Control.Monad -- guard関数を使うため ptriples = do a <- [1..] b <- [1..a] -- b <= a c <- [a..a+b] -- c を斜辺とすれば a <= c かつ三角不等式より c <= a+b guard (a*a + b*b == c*c) return (b,a,c) -- 小さい数から並べる main = mapM_ print ptriples $ runghc ptriples.hs (3,4,5) (6,8,10) (5,12,13) ... これは、次のPythonコードとほぼ同じように動作する。 # -*- coding: u

    Listモナドで非決定性計算 - ももいろテクノロジー
  • Haskellでの合成可能なオブジェクトの構成とその応用

    Haskellでの合成可能なオブジェクトの構成とその応用 木下郁章, 山和彦, 2015 Haskellで状態を管理する際は、 一般的に代数データ型や型クラスが用いられるが、 データが拡張できないか、動的な性質を持たない。 そのためHaskellは、 複雑な状態を扱う問題領域には適していないと考えられてきた。 一方で、一般的なオブジェクト指向言語では、 オブジェクトを提供することでこの問題領域で成功を収めている。 論文では、Haskellの言語仕様を変更することなしに、 オブジェクト指向言語から着想を得たオブジェクトを実現する。 論文で提案するオブジェクトは圏を構成し、合成を用いて継承を表現できる。 また、終了する運命にあるオブジェクトやストリーミングなどに応用でき、 複雑な状態を扱うゲームの実装にも使われている。 論文をダウンロード(PDF) PPL 2015 発表スライド ここに

  • Haskell の Monad とは言語内DSLのフレームワークである - あどけない話

    この記事は、Haskellを勉強してある程度分かったけど、Monadで挫折した人のための記事です。10分間で、Monadに対する納得感を得ることを目的としています。他の言語でいう「モナド」にも通用する内容ですが、Haskell の文法や用語を用いますので、他の言語の利用者に分かるかは不明です。 Haskellを勉強したのですから、 代数データ型 型クラス は分かっていることにします。Monad は、単なる型クラスの一つで、それ以上でもそれ以下でもありませんから、この二つが分かってないと話になりません。 また、言語内DSL(以下、DSLと略記)という考え方を知っていることも仮定します。Monad とは、DSLのフレームワークという直感を与えるのが、この記事の主眼ですからね。 さらに、構造化定理をいう単語を聞いてもビビらない人を想定しています。逐次、反復、分岐があれば、計算しうる計算はすべて記

    Haskell の Monad とは言語内DSLのフレームワークである - あどけない話
  • bitbucketの使い方

    With best-in-class Jira integration, and built-in CI/CD, Bitbucket Cloud connects developer workflows from planning to incident management. Join millions of developers who choose to build on Bitbucket.

    bitbucketの使い方
  • https://qiita.com/camlspotter@github/items/06b3d8af27feedf91cf2

  • 山本和彦の発表資料

    2019/11 GHC の GC 2019/09 HTTP/2時代のコネクションの切り方 2019/06 関数プログラミングことはじめ 2019年度版 2018/03 ユニットテストあれこれ 〜 Haskellerの視点から 〜 2018/02 TLS 1.3 draft 23 ハンズオン 2018/02 TLS 1.3 の標準化動向 2017/01 TLS 1.3 2016/09 HTTP/2 and TLS in Warp 2015/11 関数プログラミングことはじめ 2015/11 HTTP/2 in Warp with Haskell lightweight threads 2015/11 Server Implementations of HTTP/2 Priority (revised) 2015/10 Server Implementations of HTTP/2 Prio

  • Haskellに副作用はないのか? - HaHaHa!

    Haskellには副作用はないのか? 議論に微かな違和感があるような気がしたのですが,それが何にたいする違和感かよくわかりませんでした.件の記事を読みかえして,また違和感を感じたので,すこし考えてみることにします. 「副作用」って何のことを言っているの? この手の議論が判りにくくなるのは主たる原因はキーワードが定義が明示されてないことにあると思っています.ここでの議論のキーワードはもちろん,「Haskell」と「副作用」です.件の記事では「Haskellの範囲」については定義が示されていますが,「副作用」については定義が示されていません. 「副作用」=「入出力」なの? 私の頭のなかでは「副作用」というのは,「変数束縛の変更」です.だから,「プログラミング言語に副作用がある」と「プログラミング言語では変数の束縛を変更がある」とは同じことです.「Haskellには変数束縛の変更」はありませんか

    Haskellに副作用はないのか? - HaHaHa!
  • Haskellには副作用がないのか? - あどけない話

    ある人は、Haskell には副作用がないと言う。また、別のある人は Haskell には副作用があると言う。Haskell を学ぶ者にとって、こういった意見のい違いが、Haskell を得体の知れない言語にし、学習の障壁となっているかもしれない。そこで、この記事では、なぜこのような意見の相違が生まれるのかについて説明したいと思う。 向心力か遠心力か? 僕は高校三年になって受験勉強をするまで、物理の運動方程式が得体の知れないものに思えていた。 例として円運動を考えよう。ある説明では、円運動をしている物体には向心力が働いていると説明されている。また別の説明では、遠心力が働くと説明されている。一体、どういうことだろう? 受験勉強でたくさんの問題を解いて、ようやく分かった。これらの説明はどちらも正しい。すなわち、観測者がどこにいるかによって、説明の仕方が異なるのだと。 観測者が円運動をする物体

    Haskellには副作用がないのか? - あどけない話
  • EclipseFP

    EclipseFP brings you the power of Eclipse to your daily Haskell programming. The features of EclipseFP include: Graphical debugging of modules, Visual Cabal files editor, Integration with GHC and HLint to provide autocompletion, error messages, suggestions and quick fixes, Navigational interfaces for your packages, and many more! If you want to try EclipseFP follow the installation instructions.

  • GitHub - wavewave/fficxx: Haskell-C++ Foreign Function Interface Generator

  • 継続渡しなHaskellライフ - モナドとわたしとコモナド

    CPS(Continuation passing style, 継続渡しスタイル)は、関数型プログラミングにおけるプログラムの書き方の一つである。CPSを導入する簡単な例をいくつか紹介しよう。 まず、入力された数値が3の倍数かどうかを判定するプログラムを作ってみよう。 foo :: IO Bool foo = do n <- readLn :: IO Int return (n `mod` 3 == 0) ここで「CPS変換」なる儀式を行うと…こうなる! foo' :: (Bool -> IO r) -> IO r foo' cont = do n <- readLn :: IO Int cont (n `mod` 3 == 0) 「なにこれ、returnを置き換えただけじゃねえか!意味わかんねー!」という声が聞こえてきそうだが、もう少し考えてみよう。 3の倍数が入力されたらFizz、5の

    継続渡しなHaskellライフ - モナドとわたしとコモナド