Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

haskellに関するatm_09_tdのブックマーク (101)

  • Haskell入門

    Skip to the content. Haskell入門 従来の言語では問題を部分化する方法について概念的な限界がいくつかある。関数型言語はこれらの限界を押し広げるも のである。 なぜ関数プログラミングは重要か 関数プログラミングを習得するには,これまで命令プログラミングで培った技術はいったん忘れ,真っ白な気持ちで臨む必要があります。関数型の山を登るためには,命令型の山を降りなければなりません。 第1章 関数プログラミングは難しくない! Haskellは理解すれば理解するほどきれいに書けることを約束してくれます。信頼してください 常にパターンを探しましょう。単純になるとき、またその時だけそれらを抽象化するのです 辛抱強く抽象化を正しく理解しましょう。もしそれが出来たならすべてのことが魔法のようにつじつまが合うようになるでしょう。 実装そのものが設計図となります … Haskell Ma

  • 「Haskellのモナド完全に理解した」試験問題

    Haskellは勉強したけどモナドを当に理解したって言えるのか自信がない… \そんな人向けの試験問題を作りました!/ これから実施する試験問題を、10問中8問正解すればあなたはHaskellのモナドを完全に理解しています。私が保証します! それではさっそく〜〜 第一問 まずは緊張をほぐしましょう。 Haskellの Monad は○○○○である ○○○○に当てはまるのは以下の選択肢のうちどれでしょう? 型 関数 型クラス 型シノニム 答え

    「Haskellのモナド完全に理解した」試験問題
  • HaskellでS3にファイルアップロードしてみた | DevelopersIO

    はじめに あけましておめでとうございます。CX事業部の吉川です。 年末年始連休は全体的にダラダラとした寝正月を過ごしていましたが、ちょっとくらい何かやろうということで自由研究として「Haskell+AWS」に取り組んでみました。 ずっとHaskellに興味があり、すごいHと『入門Haskellプログラミング』は買ったのですが、すっかり積んでしまっていました。 そんなわけで、勉強しようしようと思いつつ手を出せていなかったのでこの機会にえいやで始めました。 今回は手頃なところでS3へのファイルアップロードを行います。 GitHubリポジトリ まずは完成物から。 stack run でS3バケットに10MBと100MBのダミーファイルをアップロードします。 https://github.com/dyoshikawa/amazonka-s3-playground S3バケットとIAMユーザ作成

    HaskellでS3にファイルアップロードしてみた | DevelopersIO
  • とほほのHaskell入門 - とほほのWWW入門

    概要 Haskellとは 関数型言語 純粋関数型言語 インストール Haskell Stack Hello world 基 予約語 コメント ブロック レイアウト 入出力 型 変数 数値 文字(Char) 文字列(String) エスケープシーケンス リスト([...]) タプル((...)) 演算子 関数 演算子定義 再帰関数 ラムダ式 パターンマッチ ガード条件 関数合成(.) 引数補足(@) 制御構文 do文 let文 if文 case文 where文 import文 ループ データ型 データ型(列挙型) データ型(タプル型) データ型(直和型) 新型定義 (newtype) 型シノニム (type) 型クラス (class) メイビー(Maybe) ファンクタ(Functor) アプリケイティブ(Applicative) モナド(Monad) モジュール (module) 高階関

  • HaskellのSTG言語 - 純粋関数型技術メモ

    この記事では GHC 8.0.1 を用いています. STG言語 STG(Spinless Tagless G-machine)とは,遅延評価で高階関数をサポートする関数型言語のための抽象機械である. STG(Shared Term Graph*1)言語はSTG機械のための言語で,GHCでは Haskellソース → Core言語 → STG言語 → C-- → アセンブラ,LLVM というコンパイル過程で中間言語として現れる. STG言語は,ghcで --ddump-stg オプションをつけてコンパイルすると出力される. Core言語 Core言語は概ねHaskellのサブセットであり,脱糖したHaskellとみることができる.Haskellと異なる点は, 多相関数が引数に明示的に型パラメータをとる(@ a) パターンマッチはcase式でのみ可能で,ネストしたパターンは使えない. 変数はリ

    HaskellのSTG言語 - 純粋関数型技術メモ
  • Haskellと層 - Qiita

    層とプログラミング はじめに Haskellは、モナドという圏論用語を言語仕様に採用した初めての実用プログラミング言語です。歴史的には、Godementが1958年に、層コホモロジーの計算のため使ったのが(コ)モナドの最初の例だと言われています。 層は何らかの空間の「形」を代数的に計算するための仕組みで、局所的な性質と大域的な性質の関係を圏論的に表現するフレームワークと言えます。 一言で言えば、層とは関数とその定義域の組の集りのようなものです。いろいろな大きさの鉱物の結晶が積み重なって、地球全体を地層が覆っている様子をイメージするとわかりやすいかもしれません。層を使うと、定義域が重なりあう部分関数の関係と、それらが全体に波及していく様子を、圏論的に、すっきり表すことができます。 層はいわゆる"幾何的論理(geometric logic)"のモデルでもあり、実はモナドも幾何的論理で表現できる

    Haskellと層 - Qiita
  • Haskellでwordsを実装してみた

    Haskellを学び始めたが、いまだにまともなコードを書くことができないでいる。理由は簡単で、まだ標準入出力が扱えないからだ。 標準入出力はUNIXでは極めて根的な機能だ。標準入出力が扱えるようになればだいたいの処理はできると考えてよい。というのも、UNIXではパイプによって標準入出力の入力元と出力先を変えることができるからだ。パイプを使えば、ファイル操作やネットワーク操作をコードで表現する方法を知らなかったとしても、操作ができるようになる。 ところが、Haskellでは標準入出力を扱えるようになるまでが遠い。別に書けないわけではない。今でもHaskellでHello,Worldぐらい書けるし、特定の処理がしたいのであれば似たような入出力処理をするコードをどこからか探してきて改変することで目的のコードを作り出すことはできる。そういう意味では、現時点でもHaskellである程度のコードは書

  • 美術の人が考える Haskell - Qiita

    sketchで作成しました。 普段日銭を稼ぐためwebデザインをしておりますが業は油絵です。 Haskell初心者なので間違っている部分があるかもしれません。 数学的なこと・エンジニア的な部分は当に難しく、単語ひとつ理解するのに非常に時間がかかります。 アーティストとエンジニアは似ている部分が数多く見受けられます。 美しいものを大切にする気持ちがとても強いところ。 何度も試行錯誤を繰り返し、形を研ぎ澄ましていくところ。 世の中の「既存」から外れた部分に価値を見出すところ。 これからも、Haskellをゆっくりとですが気長に勉強していきたいと思います。 美術もHaskellも、どちらも美しいです。 以上で 美術の人が考えるHaskell を終わります。

    美術の人が考える Haskell - Qiita
  • HaskellでTwitterのタイムライン取得とツイート投稿をやってみた|TechRacho by BPS株式会社

    はじめまして、jhondaです。 入社したばかりでまだまだ勉強することだらけですが、今回はお仕事以外のテーマで書きたいと思います。 以前 Haskell の勉強を兼ねて、おうちで TwitterのBot を作りました。 TwitterAPI を 用いて Haskell でタイムラインの取得とツイートの投稿ができるプログラムを作成するところまでまとめてみます。 準備 stack (Haskell のビルドツール) を入れる。 Twitter のアカウントを作成する。 ホームタイムライン確認のために適当にフォローしておく。 Application Management で App を登録し API Key を取得する。以下の4つをあとで使用する。 Consumer Key Consumer Secret Access Token Access Token Secret プロジェクトの作成

    HaskellでTwitterのタイムライン取得とツイート投稿をやってみた|TechRacho by BPS株式会社
  • Haskell のアプリケーション向けに軽量の Dockerイメージ を作る (和訳)

    アプリケーションを Docker の実行可能イメージ として提供することは、アプリケーションを配布するための手頃な方法です。ツールチェインやフレームワーク、依存関係をインストールする必要が無くなります。ただ Docker イメージをプルして走らせればいい。当に簡単なことです。しかし Docker イメージは、サイズ的に尋常じゃなく大きくなる可能性があります。アプリケーションを走らせるために必要な、全ての依存関係をインストールする必要があるからです。ユーザとしてはかなりイライラしますよね。かなり限定された問題を解く小さなアプリケーションを使いたい時に、2GB の Docker イメージをダウンロードしなければならない状況を考えて見てください! 嫌ですよね。そして実際、そんなことをする必要はありません。コンパクトな Docker イメージに、実行可能ファイルだけを入れて配布したらどうでしょう

    Haskell のアプリケーション向けに軽量の Dockerイメージ を作る (和訳)
  • 量子コンピューターにはモナドがよく似合う - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 日 12月17日を数で表すと 1217。199番目の素数、スーパー素数(素数の数列における素数番目の素数)の日です。今回、17番目の Advent Calender 2017 Haskell(その2) に参加させて頂きます。望月新一教授による宇宙際タイヒミューラー理論の 論文査読が完了し、正しさが認められたという 嬉しいニュース1が報じられた記念日に、この記事を書いています。 さて、この記事では、Haskell と量子プログラミング2との相性の良さと、現在利用できる QIO について軽く紹介して、その使い方や問題点を見ていきたいと思い

    量子コンピューターにはモナドがよく似合う - Qiita
  • 2017年に「すごいHaskellたのしく学ぼう」を読む - Qiita

    はじめに この記事は「Haskell (その4) Advent Calendar 2017」の13日目の記事になりました。 書籍「すごいHaskellたのしく学ぼう」は2012年に発売され、現在も販売されているHaskell入門にぴったりの良書です。しかし、内容が2012年当時のままで止まってしまっています。 そこでこの記事では(もう年末ですが)2017年現在「すごいHaskellたのしく学ぼう」を読むにあたって注意すべき点を章ごとにまとめて紹介します。 イントロダクション イントロダクションの「Haskellの世界に飛び込むのに必要なもの」ではHaskell Platformをインストールするように紹介されています。しかし、現在ではStackを利用するのが一般的です。 Linux系OSではリポジトリにある「stack」や「haskell-stack」などのパッケージを導入することで使える

    2017年に「すごいHaskellたのしく学ぼう」を読む - Qiita
  • goな関数 - あどけない話

    これは「Haskell (その2) Advent Calendar 2017」の1日目の記事です。遅くなってすいません。 読者として末尾再帰ぐらいは理解しているHaskellerを想定しています。 トップレベルとローカル関数 再帰を用いて関数を書いているとき、トップレベルで再帰するか、ローカル関数で再帰するか、ときどき迷う。この記事では、僕なりの判断基準を示したい。 Data.Listで定義されている再帰が必要な関数は、ほとんどがトップレベルで再帰している。代表例のmapの例を見てみよう。 map :: (a -> b) -> [a] -> [b] map _ [] = [] map f (x:xs) = f x : map f xs mapをローカル関数を使う実装にしてみよう。この記事では、ローカル関数名としてgoを用いる。(loopを使う流儀もある。) map' :: (a -> b)

    goな関数 - あどけない話
  • Haskell on Docker で Portable CLI を作ろう - Qiita

    概要 Docker を使って Haskell で CLI (Command Line Interface) のアプリケーションを配布することを考えます。 Docker さえインストールされていれば多くの OS で実行可能な CLI が作成できます。 記事では Docker Image を Multi-Stage Build を使って作成することで実行時のコンテナサイズを小さくする方法を紹介します。 配布するにはイメージサイズをできる限り小さくする方が使ってもらいやすくなるからです。 また上記のイメージを使った Whalebrew による CLI アプリケーションの作成と配布について書きます。 対象とする読者 Haskell と Docker の基的な使い方を理解している読者を想定しています。 この記事では Haskell 自体の文法や使い方の説明はしません。 また Docker コマン

    Haskell on Docker で Portable CLI を作ろう - Qiita
  • Haskellを勉強して感動したこと・難しいと思ってること - Qiita

    Haskell Advent Calendar 4日目の記事です。 Haskellに入門したのは6, 7年前 ゲームが作れる言語(某モナディウス)だよ、と言われホイホイ研究室に入って学んだのが運命の出会いでした。最初は奇妙な言語でやたら頭を使わせるし聞いたことも無いしで、文句を言っていましたが学んでいくうちに次第にプログラムの美しさ合理性に惹かれていきました。残念ながら普段は僕の頭にあまる言語なので使用していませんが、後のプログラミング人生に多くの影響を残して言った感動したこと、そしてなぜ難しいと思っているかをまとめていきたいなと思います。基的には、書籍「すごいHaskellたのしく学ぼう」の内容の抜粋になります。Haskell未経験者の方に是非、学ぶきっかけになればと思っています。(当はHaskellのビジュアルプログラミング環境を作りたかったです・・・。時間が無くて断念) Hask

    Haskellを勉強して感動したこと・難しいと思ってること - Qiita
  • A Tour of Go in Haskell

    A Tour of Go in Haskell へようこそA Tour of Go in Haskell へようこそ。 このサイトは、Go の有名なチュートリアル A Tour of Go の 並行性 の章を Haskell でやってみるというものです。 Haskell は Go と同じく 軽量スレッド や チャネル といった並行処理の機能を持っています。 そのため Haskell で Go と同じ処理を記述して2つを見比べてみるのは興味深いことでしょう。 ここから始めましょう。 Haskellに詳しい方へ: このサイトでは Go との対比を分かりやすくするため、もっぱら async, stm などのパッケージを使って IO の中で明示的に並行性を扱います。 Evalモナド、Parモナドなどは扱いません。 また、Haskell ユーザでない人の分かりやすさのために、意図的にユーティリティ関

    A Tour of Go in Haskell
  • Haskellの入門から中級者になるまでの指針 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? プログラミング言語の学習は一般に大変である。 最初にどのようなことをすればいいのか、どのをよむべきなのか等疑問は尽きない。マイナーな言語で情報が少なければなおさらである。 この記事では諸事情でHaskellに入門することになった方にむけて、どのように勉強していくか、参考にすべきや記事を紹介する。 より良い指針にするためにも、指摘、感想等はコメントや私のTwitterアカウント(@Lugendre)に投稿して頂けるとありがたい。 入門〜初心者 環境構築 まずどんなプログラミング言語においても、プログラミングをする環境が必要である。Ha

    Haskellの入門から中級者になるまでの指針 - Qiita
  • 未経験大学生によるHaskell入門日誌-第1話|TechRacho by BPS株式会社

    はじめに 片山です。 前からやろうやろうと思いつつもなかなか手を出せなかったHaskellに挑戦してみたいと思います。 以前TidalCyclesを紹介しましたが、Haskellベースだったこともあり、いい機会かなと。 TidalCyclesをやるときにGHCとかCabalは入れてしまったので今回は導入については省きます。 最初のうちはとりあえずインタプリタ(GHCi)でやっていきたいと思います。 $ ghci GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help Prelude> 進め方としてはLearn You a Haskell for Great Good!のオンライン資料に沿って進めていきたいと思います。 邦訳版の書籍とかも出ているものですが、英語版のWebから無料で見られます。 ちなみに筆者は英語がほとんど

    未経験大学生によるHaskell入門日誌-第1話|TechRacho by BPS株式会社
  • 発展編! Haskellで「型」のポテンシャルを最大限に引き出すには?【第二言語としてのHaskell】|ハイクラス転職・求人情報サイト AMBI(アンビ)

    発展編! Haskellで「型」のポテンシャルを最大限に引き出すには?【第二言語としてのHaskell】 第二言語としてHaskellを学習するシリーズ。発展編では、実践編で定義した型と関数をモジュールにする方法と、型を見直して関数をさらに安全なものにする方法を紹介します。さらに勉強したい方向けの超発展編付き! こんにちは。Haskell-jpの山悠滋(igrep)です。 Haskellらしいプログラミングとは何か? について、これまで基と実践を解説してきました。 実践編では、問題にあった型を自分で定義し、 その型を使った関数を定義していくというHaskellプログラミングの流れを、 トランプゲームのブラックジャックの手札の合計計算という例を使って学びました。 この記事ではさらに発展的なHaskellプログラミングの道を示すべく、次の2つの課題に取り組みます。 定義した型と関数をモジュ

    発展編! Haskellで「型」のポテンシャルを最大限に引き出すには?【第二言語としてのHaskell】|ハイクラス転職・求人情報サイト AMBI(アンビ)
  • モナドはポケモン。数学が出てこないモナド入門 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 仮説:モナドとはポケモンである このテキストは、でんこうせっかの速さでモナドが使えるようになりたいひとのための、真面目なモナド入門です。数学っぽい話はなるべく避けていますし、関数型言語についての知識がなくても読めるように書いています。対象の読者は以下のような人です。 モナドが何なのか知りたい、使いたい Haskellを学ぼうとしたがモナドがわからなくて挫折した モナドを学ぼうとしたら、箱だのブリートだのと変な喩え話をされて余計わからなくなった プログラミングを学ぶつもりが数学の講義が始まったので止めた 最初はモナドは難しいからとGHCi

    モナドはポケモン。数学が出てこないモナド入門 - Qiita