サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
yu-i9.hatenablog.com
この記事は CAMPHOR- Advent Calendar 2018 4日目の記事です. 1. はじめに プログラミング言語 Python は汎用の動的型付き言語で,機械学習や Web 開発を中心に幅広く使われています.特にここ数年の Python 人気は凄まじいものがあり,某大学生協の本屋では,プログラミング系の平積みコーナーが一面Python 関連書籍で埋め尽くされています.所属しているコミュニティの関係でプログラミング初心者の学生にもよく会うのですが,第一言語が Python という方が非常に多く,まさに猫も杓子も Python といった状況です. そんなわけで,人々がこぞって Python でプログラムを書いているわけですが,「Python 自体がプログラムである」という事実に目を向けたことのある人は非常に少ないと思います.みなさんが Python のプログラムを書いて実行する時
この記事はCAMPHOR- Advent Calendar 2017 11日目の記事です. アブストラクト 漸進的型付けは,ひとつの言語の中で静的型付けと動的型付けをスムーズに組み合わせるための技術です. よく知られた特徴は any 型を使った静的型付けで, TypeScript や Python といったプログラミング言語には既に実装されています. しかし,理論と実際のプログラミング言語の間には大きなギャップが存在します. 特に,漸進的型付けの理論で提案されているキャストを用いた動的型検査が実装されていないために, 静的型付けの恩恵を十分に得られていないという問題があります. この記事では,まず漸進的型付けの理論をコード例を用いて紹介し, 現状の漸進的型付き言語が抱える問題を解説します. そのあとで,漸進的型付き言語が目指すべき目標を理論的視点から論じます. それらの目標は,静的型付けを
YesodでWebサイトを書いているとき,Stackageでわざわざ特定のスナップショットのページに飛んでHoogle検索をするのがとても面倒だったので,検索ソースとなるスナップショットを簡単に選択・追加・削除できるようなChrome拡張を作りました.その名も HoogleSwitcher! chrome.google.com 中身的には全くスゴイことはしていなくて,入力に応じてHackageやStackageのURLをちょっと変えてやってるだけなので超軽量です. 検索ソース(Hackage / LTS / Nightly)を選んでクエリを投げると良しなにタブが開きます. アイコンを右クリックすると出てくるオプションページでは検索ソースを追加したり削除したりできます. 試しに lts-4.2 を追加してみると下のようになります. バグ報告とかコードレビューとかフィードバックとかお待ちしてま
この記事は CAMPHOR- Advent Calendar 18日目の記事です. こんにちは @yu_i9 です.CAMPHOR- Advent Calendar には今年が初参加になります! 本記事では「Typing Haskell in Haskell (通称 thih)」から型クラスを含んだ型推論のエッセンスを紹介したいと思います. 多少専門的な内容ですが,なるべく多くの人に理解してもらえるように頑張ります. 論文のホームページは以下になります.論文本体とオリジナルの実装が利用できます. Mark P Jones: Typing Haskell in Haskell 1.概要 Typing Haskell in Haskell から型クラスを含む型推論のアイディアを実装を交えて紹介します. オリジナルの実装を修正し stack でビルドできるようにしました. 2.注意 現在の仕様・
2014-12-31 Djangoでグローバル変数(状態)を保持したい Django Python Djangoでプログラミングをしていると、グローバルな変数や状態が欲しくなることがあります。例えばリアルタイムなサービスにおいて、回答を受け付けている問題の番号は全てのユーザーに共有させなければいけないグローバルな状態です。この問題を解決する方法は2つあります。 1. データベースを利用する これが最も直感的で簡単な方法です。状態変数を格納するモデルを作ってしまえば、アクセス・更新は容易です。 2. キャッシュを利用する データベースにアクセスするオーバーヘッドが気になるときは、キャッシュを使うと良いようです。 >>> from django.core.cache import cache >>> cache.set('key', 1, None) >>> cache.get('key'
2014-09-05 モジュール分割の基礎の基礎 Haskell Programming ls in Haskellのコードがイイ感じにスパゲッティになってきた。保守も拡張もできないコードは非常につまらないし、ここらでちゃんと設計し直そうと思い立った。しかし、たいへん驚いたことに私はソフトウェア設計のことを全く知らなかったのである。自分で闇雲に取り組んでも限界があることは目の前のコードが雄弁に語っていたので、大人しく調べることにした。今回特にやりたかったのは適切なモジュール分割なので、そこに絞って色々と調べた。 モジュール分割 大量のコードが一つのファイルに集まっていたら、全体の構造を一望することは難しいだろう。インターフェースとなる部分を発見するのも困難で、ひとつの修正を加えるのにも大きな苦労を強いられることは必至だ。そこでモジュール分割である。機能別にコードをモジュールに分割し、イン
無事夏休みに突入して時間ができたので再びTaPLを読み始めました.半年触っていなくても進行,保存の証明が書けるあたり,春の自分はずいぶんしっかりと勉強していたようです.春は22章の型再構築まで読んでいたので,ひとまず23章のSystem Fから読んでサクッと実装しました.Pythonが書きたかったので,パーサーだけHaskellで書いてそれ以外をPythonで書くというよく分からない構成で実装していますが,いろいろと学びがあったのでそれを記していきます. System Fとは 変数,抽象,適用からなる単純型付きラムダ計算に型抽象と型適用を加えて拡張した計算体型のことを指します.パラメータ化した型による計算ができることから多相ラムダ計算とも呼ばれます.この体型のみでは基本型が存在せず型の具体化が十分にできないので,Bool型の構文を追加してそれらしい操作ができるようにしています.単純型付きラ
KMCアドベントカレンダー8日目の記事です。 講義で正規表現とかオートマトンをちゃんと学んだので、Haskellの修行も兼ねて簡単な正規表現を実装しました。理論とか実装とかダルいと思うので、おまけだけ読むと楽しいかも知れません。 理論 決定性有限オートマトン(DFA) 有限オートマトンとは、 状態集合(s_0, s_1, .., s_N) 入力記号(a, b, c, など) 受理状態集合 初期状態(s_0) 状態遷移関数 によって定義される数学的モデルです。ある入力記号列が与えられると、それを左から読みながら状態を移動していきます(最初は初期状態にいる)。状態の移動は状態遷移関数に依存します。状態遷移関数は、現在の状態と入力記号を受け取って、遷移先の状態を返すような関数です。例えば「s_0にいる状態で'a'を読んだら、s_1に移動する」というような遷移を定義します。全ての記号を読み終わった
何の知識もなくHaskellでコードを書いていると大域変数を引き回してしまうことが多々あり、非常にイライラします。Haskellで大域変数を実現したいときはReaderモナドを使えば良いようです。微妙にリファレンスが少なくてヤキモキしたので知見を並べていきます。 まずは公式リファレンス。 Control.Monad.Reader - Hackage 続いて定義。 newtype Reader e a = Reader { runReader :: e -> a } instance Monad (Reader r) where return a = Reader $ \_ -> a m >>= f = Reader $ \r -> runReader (f (runReader m r)) r 上を見ればわかるとおり、Readerというのは環境変数(e)を受け取って値を返す関数のことなので
2014-10-04 酒に酔って気がついたらKMCに入会していた Other 後期が始まって二日が経過した夜、ぱすたけくん(id:Pasta-K)とかとご飯に行った。料理がとても美味しかったので気分が良くなってお酒をぼちぼち飲んでいたら、もっと気分が良くなってしまって、気がついたら部室で入会金を払っていた。誘われたり断ったりを繰り返して微妙な感じになっていたから、酒の力を借りてめぐり合わせに乗っかれたのは非常に良かったと思う。なにはともあれ、なるべく部室に顔を出していろいろな人と話をしていきたい。最近はEmacsでHaskellを書いている下ネタ大好き丸、みたいなキャラを伝えていけたらいいなぁと思っている。関係各位の皆様、どうぞよろしくお願いします。 yu_i9 2014-10-04 00:58 酒に酔って気がついたらKMCに入会していた コメントを書く モジュール分割の基礎の基礎 »
Haskell Hierarchical Librariesをぼんやりと眺めていたところ、Debug.Traceが目に止まった。効率の良いデバッグとかテストに憧れを持ち始めるお年頃なので、こういうパッケージ名に弱いのかもしれない。まあ実際、Haskellでコードを書いていると、printfデバッグができなくて悶々とする場面は結構あったので悪くはない。 以下で簡単な実行例を示していく。 また、traceStackのところでプロファイリングに関連した話が登場したので、そちらも簡単に調べてみた。 使うライブラリ Debug.Trace デバッグやモニタリング以外では絶対に使うなよ、とアナウンスされている。unsafePerfomIO(IOを外してしまう黒魔術)とかを使っているのがチラッと見えたし、確かに危なそうだなぁという気はする。 下準備 プロファイリングを行うためには、haskell-pla
このページを最初にブックマークしてみませんか?
『yu-i9.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く