[SIMILAR] WITH 7707 haskell WITH 6425 unsafe WITH 3858 sources WITH 2702 archive WITH 1283 install WITH 744 ッケ WITH 457 公開 WITH 455 追加 WITH 447 パッ WITH 438 以下 WITH 248 ケー WITH 155 ージ WITH 1 [ WITH 1 ] WITH 1 ghc WITH 1 の新 WITH 1 新し WITH 1 しい WITH 1 い版 WITH 1 版の WITH 1 のsa WITH 1 sarge WITH 1 向け WITH 1 けの WITH 1 のパ WITH 1 ジが WITH 1 が公 WITH 1 開さ WITH 1 され WITH 1 れて WITH 1 てい WITH 1 いま の検索結果 304 件中 1 - 10 件目 (0.529300821 秒)
GHCの新しい版のsarge向けのパッケージが公開されています。ただ、まだ6.4.1のようです。 /etc/apt/sources.listに以下を追加して、apt-get install ghc6。 deb http://haskell-unsafe.alioth.debian.org/archive/i386 . stable ...
OpenGLでちょっと遊んでみようかなと思い、せっかくなのでHaskellでやってみることにしました。環境はWindowsのGHC 6.10.4で。 まずは、GLUTバインディングをインストールします。cabal-installが入っていれば、 cabal install GLUT でインストールできます。glut32.dllは含まれていないので、GLUT for Win32か ...
# (スコア:6876)
import Data.List on :: (a -> a -> b) -> (c -> a) -> (c -> c -> b) f `on` g = \x y -> g x `f` g y のようなonを定義しておくと、 sortBy (compare `on` snd) [(1,2),(2,1),(1,3)] のように書くことができます。以下と同じですが、ちょっと読みやすげ。 sortBy (\ (_, x) (_, y) -> compare x y) [(1,2),(2 ...
# (スコア:6875)
by Brent Yorgey <first initial last name at cis.upenn.edu> 標準Haskellライブラリには、代数や圏論に裏打ちされた数多くの型クラスが用意されています。流暢なHaskellハッカーになるためには、これら全てに根本的に慣れ親しんでいる必要がありますが、慣れ親しむためには、しばしば山ほどのチュートリアルや ...
# (スコア:6867)
Haskellにはバイナリを読み書きする時に使えるBitSyntaxというライブラリがあります。rubyで言うところのpackとかunpackに近いでしょうか。パースする時には返り値の型が引数に依存するので、その部分のコードはTemplate Haskellになっています。例えば、tzfile形式のファイルをパースするならこんな感じになり ...
# (スコア:6867)
Haskell APIの検索ができます。関数名はもちろん型からも検索できるのが面白いです。 Ord a => [a] -> [a] と入れるとsortなどが出てきます。引数の順番が変わっていても認識するので、 [a] -> (a -> b) -> [b] でもmapが出てきます。 XML-RPCなどで呼び出せるようにして、エディタから引けるようにすると便利そ ...
# (スコア:6867)
GHC 6.6からは、 list :: [forall a. Num a => a] list = [1 :: Int, 1 :: Float, 1 :: Integer] のようにして多相型のリストをそのまま作ることができるようです。 ...
# (スコア:6867)
Invalid Text次はSynonym Families。引数の型によって関連づけられた型を変えたいときに使います。C++でいうところの、特殊化されたテンプレートの中のtypedefとでも言えるでしょうか。 ありがちな例としては、コレクションクラスがあります。 class Collection a where type Elem a empty :: a add :: Elem a ...
# (スコア:6867)
GHC 6.12でDeprecatedになるらしいImpredicative Polymorphismをどうやって書き換えるのか考えてみました。 例えばこんなの。 {-# LANGUAGE ImpredicativeTypes, Rank2Types #-} f :: Maybe (forall a. [a] -> a) -> (Int, Char) f (Just g) = (g [1, 2, 3], g ['a', 'b']) f Nothing = (99, 'z') のように定義 ...
# (スコア:6867)
キーと値からなる設定ファイルをパースするとします。設定ファイルはこんな感じです。 name=Test value=5 マップなどで値を持つという方法もありますが、ちゃんと型付けするために専用の型を用意することにします。そうするとパースするコードはこんな感じでしょうか。 import Control.Monad import Data.Maybe ...
# (スコア:6867)
# (スコア:10000)