タグ

Haskellに関するwamanのブックマーク (45)

  • Go vs Rust? Choose Go. | Matthias Endler

    I wrote this article a long time ago. In the meantime, my opinion on some aspects has changed. In order to give a more balanced perspective on the pros and cons, I suggest to read this comparison on Go vs Rust instead, which I wrote in collaboration with Shuttle 🚀 Rust vs Go: A Hands-On Comparison Source: Gopher designed with Gopherize.me. Gears designed by Freepik "Rust or Go, which one should I

    Go vs Rust? Choose Go. | Matthias Endler
    waman
    waman 2017/09/18
    『Rust is already a powerful language and it gets stronger every day. It feels much more like a "pragmatic Haskell" to me than a "safer C".』
  • monadからeffectへ - Just $ A sandbox

    追記 もう少しまともなeffect入門記事を書きました myuon-myon.hatenablog.com この文章は今から5-10年後に万が一effect systemが流行り始め、今のHaskellのような立ち位置になった場合に備えて書いています。 effect systemについて Haskellはモナドを用いて純粋・非純粋を切り分けることができる言語で、computational effectを扱うために導入されたものだった。 かつては関数 A -> B で一緒くたにしていたcomputationは、 A -> T B と、文脈 T をもった関数として表現できるようになった。ところでこのようなcomputational effectとしてのモナドを言語機能に組み込むには2つの方法があって、 Meta Language方式 (Haskell) Programming Language

    monadからeffectへ - Just $ A sandbox
    waman
    waman 2017/07/12
    『effect systemはいわば添字付きのモナドであり、プログラム A -> B を文脈 T とそこでのエフェクト e があって A -> Te B として表現するものである』
  • 関数型プログラマからみたRust | κeenのHappy Hacκing Blog

    C++からRustに入った人あたりから「関数型言語から来た人のRustの感想を知りたい」とたまに言われるのでいつかブログ書こうか。 — κeen (@blackenedgold) 2017年4月3日 イントロ 私はRustをやる前にはCommon LispやSMLを主に使っていましたが、仕事ではScalaを使っていましたし他にもOCamlやSchemeやClojureやATS2やHaskellなどを書くこともありました。 私を含めた多くの関数型言語経験者人が一度は Rust for functional programmers を読んだことがあるかと思います。 このように関数型言語と比較して書かれるといかにも似た言語に見えるので私は興味を持ちました。そこで私は実際にRustに触れ始めたのです。 構文 let があるのでおよそOCamlなどに似ているという印象を受けました。 デフォルトでイミ

    関数型プログラマからみたRust | κeenのHappy Hacκing Blog
    waman
    waman 2017/04/06
    『一度コンパイラの気持ちを理解してしまえば所有権や参照を意識せずにプログラミングするのが気持ち悪いとさえ感じるほどに自然でした。』
  • Haskellでセキュリティフォントを復号してみる - 0x90

    セキュリティフォントとかいうのが話題になってましたね。 実はあれは単純なシーザー暗号じゃないらしい(マイナンバーごとにテーブルを変えている)とかいう話もあるんですが、単純なシーザーだと思ったときじゃあ何個マイナンバーを集めれば復号化できるかな?と思ってHaskellでプログラムを書いてみました。 予想 チェックディジットを通る確率はざっくり10分の1で、テーブルはだいたい10! ~ 107個候補があるので、まあ7,8個くらいあれば一意に定まるんじゃないかという予想。 コード コードはここにぶっこみました。 GitHub - hajifkd/securefont 説明 流石にUTSLすぎワロタな記事になっていたので追加。 以下のコードでは、適当にマイナンバーを作って適当なキーで暗号化しています(encode.hs)。 それを総当りで復号化するのがdecode.hsです。どちらも普通にコンパイ

    Haskellでセキュリティフォントを復号してみる - 0x90
  • Haskellで無限個の無限リストをソートされた形で結合する - プログラムモグモグ

    CodeforcesやProject Eulerの問題には、無限リストをうまく使うと綺麗に解くことができる問題がたくさんあります。 数列の性質から探索範囲の上界を決めて解を探索することが多いのですが、きちんとした根拠を持って上界を決めることができることは少なく、余裕を持って十分に広い範囲で計算して解を求める解法がよく取られます。 Haskellの特徴である遅延評価とその洗練された糖衣構文を用いると、無限リストを簡単に扱うことができます。 上界を適当に定める解法よりも、より宣言的で美しく、時に効率的なコードで同じ解を得ることができます。 しかし、無限リストをきちんと、それも無限個の無限リストをきちんと扱うとなると、意外と苦労します。 この記事では、無限個の無限リストをソートされた形で結合する方法について説明します。 一般的な無限リストではなく、条件はかなり絞っていてます (そうでないと原理的

    Haskellで無限個の無限リストをソートされた形で結合する - プログラムモグモグ
    waman
    waman 2016/10/22
    ブクマしてなかった。
  • Oden uses Google's Golang ecosystem to cook up a new language

    waman
    waman 2016/07/31
    『The new language, named Oden, is inspired by Go, but also by Haskell and Lisp. … but it provides features the Go language doesn't have yet, such as higher-level abstractions, polymorphism, and a safer yet more flexible type system.』
  • Disadvantages of purely functional programming

    Experience our online live events, exclusive and interactive. Thousands technical articles, magazines, cheatsheet and more. Up to 25% discount for more than 30 conferences a year with international experts. Exclusive content from over 30+ renowned software brands. GET STARTED

    Disadvantages of purely functional programming
  • 今のところ比較的簡単なモナドの作り方 - モナドとわたしとコモナド

    準備 モナドを作るには、どんなモナドを作りたいか考える。モナドは一般に、どのようなアクションが使えるかによって特徴付けられる。その点ではオブジェクト指向におけるインターフェイスとよく似ている。 では、foo :: String -> M Boolとbar :: M Intという二種類のアクションを持つモナドを作るとしよう。まず、どんなアクションが使えるかを表すデータ型を定義する。 {-# LANGUAGE GADTs #-} data MBase x where Foo :: String -> MBase Bool Bar :: MBase Int GADT(一般化代数的データ型)の各データコンストラクタがアクションに対応する。GADTsを使ったことがなくても心配してはいけない。引数の型と結果の型に着目しよう。 モナドにする monad-skeletonをインストールする。 $ stac

    今のところ比較的簡単なモナドの作り方 - モナドとわたしとコモナド
  • GHC 8.0.1/base-4.9.0.0の新機能まとめ - モナドとわたしとコモナド

    GHC 8.0.1は、最上位の桁が変わるだけあって、かなり新しい機能が追加されている。 base-4.9.0.0 めっちゃインスタンスが増えた ghc/changelog.md at ghc-8.0 · ghc/ghc · GitHubを参照。あるべきインスタンスが存在することにより、孤児インスタンスを定義する必要がなくなるため、ぐっとストレスが減る。Monoid a => Monad ((,) a)、Traversable ZipListなど、いくつかは私がやった。 Semigroup ついにData.Semigroupが追加された。将来的にはこれはモノイドのスーパークラスになる。この変更によって、よりリーズナブルな定義ができるということも少なくないはずだ。 ベーシックな型が充実 Compose, Product, Sum, NonEmptyなど、決して利用頻度が高くないとはいえ基礎的か

    GHC 8.0.1/base-4.9.0.0の新機能まとめ - モナドとわたしとコモナド
  • GitHub - haskell/haskell-ide-engine: The engine for haskell ide-integration. Not an IDE

    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 - haskell/haskell-ide-engine: The engine for haskell ide-integration. Not an IDE
  • Which code is best? 3 JVM languages duke it out

    Which code is best? 3 JVM languages duke it out At JavaOne, proponents showcase the virtues of JVM languages Frege, Kotlin, and Mirah The Java virtual machine has become a popular destination for programming languages other than Java itself. Three of those languages -- Frege, Kotlin, and Mirah -- squared off at the JavaOne conference this week, with each ready to reach new milestones in their deve

    Which code is best? 3 JVM languages duke it out
  • Frege: JVMのためのHaskellのような言語

    ドイツ数学者、Gottlob Frege氏から名付けられたFregeは、JVMのための純粋関数型の強力な型付き言語だ。FregeはHaskellと似ていて、「もっともHaskellらしいコードを修正せずに、または、見て分かる最小限の調整だけで動かせる。」 Fregeの開発者たちによると、Fregeは「パワー、単純さ、表現力の豊かさの組み合わせにおいて、類を見ないもの」である型システムをJVMに持ち込んだ。これにより、非正格 評価と型推論をサポートし、純粋性とデフォルトの不変性を可能にする。そのため、副作用は宣言された時のみ使うことができる。Fregeは、以下のようなHaskellの機能をほぼサポートしている。 ADTとパラメトリックポリモフィズムを用いた型クラス より高いランクの型 パターンマッチング リストの包含 do表記 ポイントフリースタイル モジュール functor、monoi

    Frege: JVMのためのHaskellのような言語
  • 「参照透過である」とは、何から何への参照がどういう条件を満たすことを言うのか - Qiita

    関数型プログラミングが流行していることもあって、頻繁に耳にする「参照透過性」という用語について考えます。 ∥ 参照透過性 - Wikipedia その過程で目にした、Stack Overflow 上の Reddy 氏の発言が面白かったので、ザックリと訳します。 用語の起源と、それがプログラミング言語に導入された経緯 一応意味は分かってはいるんですが、なぜ「副作用のない関数呼び出し」やら「変数への再代入の禁止」といった特性を「参照透過性」と呼称するのかが分かりませんでした。この場合の「参照」は、何が何を参照することであり、また、それがどういう状態にあることを「透過である」としているのかが、通り一遍調べてみても分かりませんでしたので、掘りに行ってきます。 英語Wikipedia の方には、この考え方がプログラミングの概念として導入された経緯についての論文が参考文献として挙げられています。

    「参照透過である」とは、何から何への参照がどういう条件を満たすことを言うのか - Qiita
  • Haskellでlist monadを使って完全順列を生成してみました

    完全順列(撹乱順列とも)とは順列を置換と見た場合、不動点をもたない置換のことをいいます。順列の要素数を無限大にした極限をとったとき、完全順列の個数(モンモール数)とすべての順列の個数(n!)の比が1:e(eは自然対数の底)になり、世の中の物好きを惹きつけています。 前回のN-Queens問題につづいてlist monadを利用して関数型言語のHaskellで完全順列を生成するコードを書いてみましょう。 *Main> derangement ['c','o','n','s'] >>["ocsn","onsc","oscn","ncso","nsco","nsoc","scon","snco","snoc"] こんな感じになって欲しいのです。順列を生成した後にfilterを掛けるのは非効率的なのでやめておきます。 書いてみると以下のようになりました。 import Data.List dera

    waman
    waman 2015/08/26
    『Monadを利用することを考えると、こんなに簡単に書けるんですね。』
  • GitHub - Frege/frege: Frege is a Haskell for the JVM. It brings purely functional programing to the Java platform.

    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 - Frege/frege: Frege is a Haskell for the JVM. It brings purely functional programing to the Java platform.
  • Frege: a Haskell-like Language for the JVM

    The InfoQ Trends Reports 2023 eMag The InfoQ trends reports provide a snapshot of emerging software technology and ideas. We create the reports and accompanying graphs to aid software engineers and architects in evaluating what trends may help them design and build better software. Our editorial teams also use them to help focus our content on innovator and early adopter trends.

    Frege: a Haskell-like Language for the JVM
  • 最近読んだ論文 - xuwei-k's blog

    以下のtweetしたように、最近それなりに、(主にHaskell関連の)論文読んでるのだけれど 最近、論文読むの楽しいと思うことがそれなりにあるけど、いや楽しいとかじゃなく無意識に時間があればずっと論文読み続けてるのが当たり前の状態にならないとだめだ。って自身に言い聞かせようとし出すような変な意識の高まり方してる 2015-07-18 02:30:31 via Twitter Web Client 一回読んだだけではすべてを理解できるわけでもないし、「うまく日語に要約して紹介」ですら結構頑張らないとできる気がしないけど、それなりに読んでるのを、とりあえず一覧でまとめておこうと思った次第。 昔は論文なんて全然読む習慣なかったし、読もうとしても(英語力と前提知識の問題で)全然読めなかったけど、少しでも読めるようになってくると楽しいですね。 あと「読んだ」というのは、 最初に読んだのは結構昔だ

    最近読んだ論文 - xuwei-k's blog
  • Stackを使って楽しくHaskellスクリプティング - Qiita

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

    Stackを使って楽しくHaskellスクリプティング - Qiita
  • Scala の implicit parameter は型クラスの一種とはどういうことなのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    なんか型クラスとか言うと型の怖いひとたちが怖い話をワイワイしてるイメージがありますよね。わたしはあります。「で、それって何がうれしいのよ」とか、そういう話はあまりされていないような印象がありますね(あくまで印象です)。その上 "Scala の implicit parameter は型クラスの一種" とか言われると「暗黙的な引数がなんで型クラスの一種なんや!!!意味がわからん!!!!」となります。わたしはなりました。 というわけでそのへんについて勉強したので書きます。 そもそも型クラスってなんや Haskellとかにあるやつですね。アドホック多相を実現するもの、らしいです。すごい、いきなり意味がわからない。 というわけで、まずは「アドホック多相ってなんなの」という話からして行きます。 さて、まずは「多相」から行きましょう。この文脈で言う多相とは、簡単に言えば「引数にいろんな型を取れる」とい

    Scala の implicit parameter は型クラスの一種とはどういうことなのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • Haskellのビルドツール"stack"の紹介 - Qiita

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

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