Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 関数型プログラミングが流行していることもあって、頻繁に耳にする「参照透過性」という用語について考えます。 ∥ 参照透過性 - Wikipedia その過程で目にした、Stack Overflow 上の Reddy 氏の発言が面白かったので、ザックリと訳します。 用語の起源と、それがプログラミング言語に導入された経緯 一応意味は分かってはいるんですが、なぜ「副作用のない関数呼び出し」やら「変数への再代入の禁止」といった特性を「参照透過性」と呼称するのかが分かりませんでした。この場合の「参照」は、何が何を参照することであり、また、それがどう
2020/12/27追記 https://www.ruby-lang.org/ja/news/2020/12/25/ruby-3-0-0-released/ => Ruby3.0.0にRBSとTypeProfと用いた静的解析に対するソリューションが提供されました。 今後はこちらのエコシステムをガンガン盛り上げていきましょう💪 あいさつ P.S. 12/11 HaskellからRubypeにgemを変更しました こんにちは. 寒さが一段と厳しくなってきた事もありまして心を温めるGemを作りました. Rubyの振る舞いを汚染する事無く型保証の恩恵をゆるふわ受けられるgemです (型をつけるとか型保証という言葉をこの文脈ではメソッドの引数返り値のクラスを実行時にチェックするという意味で使っている.) 得体の知れないGemで抵抗感があるかもしれませんが、コード自体は50行以下の薄いGemなので気
(Japan) Haskell Advent Calendar 2014 の4日目のエントリです。簡単なRTBのBidderを実装します。入札戦略ではなく、プロトコル周りに焦点を当てます。 RTB(Real-time bidding) RTBはオンライン広告の配信枠をリアルタイムに売買する仕組みです。視聴者が広告枠のあるWEBページを開いた瞬間にオークションが開始され、数百ミリ秒以内に落札者に指定された広告をWEBページに表示させるというものです。オークションを開催する側をSSP(Supply side platforms)、落札する側をDSP(Demand side platforms)と呼びます。詳細は wikipedia の説明をご覧ください。 今回は、オークションに参加するbidderを実装します。つまりDSP側のシステムとなります。既存のHaskellによるbidderの実装とし
前提知識:モナド モナドを理解せずともモナド教を信ずることは出来ますが,理解していればより深く納得できるでしょう. 操作 :: 型 -> 型 は,"型"から"型"へ写す"操作"の存在を表します. モナドの文脈 m が必要とする2つの操作: return :: a -> m a で,値を保ちつつ文脈 m の中に入れ込むことが出来ます. (=<<) :: (a -> m b) -> (m a -> m b) で,「値を文脈に入った別の値へ写す操作」を「文脈に入った値を同じ文脈に入った別の値へ写す操作」に変換します. id :: a -> a は値をそのまま返す操作です. id を =<< で変換して得られる操作 join :: m (m a) -> m a で,二重に文脈に入った値を一重の文脈に入った値に戻すことが出来ます. 文脈の値から生の値を取り出す型 m a -> a を持つ操作は,一般
これはマイナー言語 Advent Calendar 2013の21日目の記事です。 Frege(フレーゲ*1 )を紹介します。 Fregeは、Java VM上で動作するHaskell風の言語です。以下のような特徴を持っています。 純関数型言語 非正格評価(いわゆる遅延評価) Hindley-Milner型推論に基づく静的型言語 これらの特徴は、Haskellと共通するものであり、構文も基本的なところについてはHaskellとだいたい同じか似ているかもしくはサブセットです。標準関数やデータ型やモジュールについても、Haskell 2010からたくさん引っぱってきているそうです。 しかしながら、Fregeはその目標において、Haskellとの完全な互換性を達成しようとはしていません。実際かなり違っています。特にJava VM上で有用であることに重点が置かれており、プリミティブ型はJavaのもの
モナドは「アクション」を表す抽象的な構造である。モナドは、Haskellにさまざまな概念に対する記述能力をもたらす。 モナドの基礎 return :: a -> m a: 純粋な値をモナドで包む。 m >>= f :: m a -> (a -> m b) -> m b: モナドmに包まれた値をfに渡し、その結果として現れたモナドを結合する。 固有アクション: それぞれのモナドに固有の方法でモナドを生み出す。 実行: モナドに包まれた値を、より根源的な形に還元する。 モナド則 モナドに以下の三つの制約を課すことによって、最低限度の記述能力を保証している。 return a >>= k == k a m >>= return == m m >>= (\x -> k x >>= h) == (m >>= k) >>= h より強い制約は、より強い力を生み出す。 モナドの分類 モナドは、以下の6つ
Written April 17, 2013 updated: May 20, 2013 Here's a simple value: And we know how to apply a function to this value: Simple enough. Lets extend this by saying that any value can be in a context. For now you can think of a context as a box that you can put a value in: Now when you apply a function to this value, you'll get different results depending on the context. This is the idea that Functors
わかめのモナド浸し - connpass ハンズオンの前座として、Maybe モナドと State モナドの解説をしました。 モナドハンズオン前座 from bleis tift 発表も資料も割と好評なようで、「モナドの教え方」みたいなものの感覚もつかめたので発表してよかったです。 モナド則とかそういう、ふつうのプログラマにとって難しい言葉は使ってないので、気負わずに読めると思います。 ただやはりState モナドは難しかったようで、ハンズオンでも State の追加説明をしたりと、ここら辺はまだ改善の余地ありですね。 実は書きたかったことが書ききれてはいないので、どっかで書きたかったことを追加したバージョンも作りたいところです。 参加者の反応は上々なようです。よかったよかった。 皆様大変ありがとうございました!往復二万円の価値が十分にある勉強になりました!来年またよろしくお願いします!
Author: Kazu Yamamoto Created: 2010/03/08 Modified: 2017/02/24 Mighttpd2 (called mighty) is a simple but practical HTTP server written in Haskell. It handles static files and CGI scripts. It also provides a feature of reverse proxy and URL rewriting with HTTP redirect. Mighttpd2 is now implemented as a WAI application using the high-performance HTTP engine, "Warp". To httperf Ping-Pong benchmark,
The Haskell Cabal | Overview Cabal: Common Architecture for Building Applications and Libraries Introduction Cabal is a system for building and packaging Haskell libraries and programs. It defines a common interface for package authors and distributors to easily build their applications in a portable way. Cabal is part of a larger infrastructure for distributing, organizing, and cataloging Haskell
社内 TechTalk での資料。Yesod に用いられている Haskell の先進的な機能について軽く解説しています。
言語女子会: undefとnullは両方必要?の続編です。 varは必要なの? とあるプログラミング言語が集う女子会にて: Python: JavaScriptちゃんってさ、なんでvarだらけなの? JavaScript: えっ、変? Python: varなんかいらなくない?私ぜんぜん持ってないよ? JavaScript: えー、じゃあ変数をどうやって宣言するの? Python: 宣言っていうか…「x = 1」みたいな代入文があれば変数xが必要なのって自明じゃない?宣言とか必要? Ruby: 必要ないよね。っていうか変数宣言とか古臭くない? JavaScript: そうかなー。 Python: 少しダサイかも。ほら断舎離ブームだし要らないものは捨てなきゃ! JavaScript: 要らないかなぁ、変数宣言。Pythonちゃんは関数がネストしているときに外側のスコープの変数に代入するのって
第21回オープンラボ岡山の発表スライド http://openlab.okaya.ma/wiki.cgi?page=%CA%D9%B6%AF%B2%F1%2F%C2%E8021%B2%F3
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く