[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 11:45 / Filesize : 259 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

関数型プログラミング言語Haskell Part3



1 名前:デフォルトの名無しさん [04/02/10 22:16]
Haskellの公式HP
www.haskell.org/
日本語サイト
www.sampou.org/cgi-bin/haskell.cgi
www.teu.ac.jp/kougi/koshida/Prog6/index.html

過去ログ、関連スレは>>2-5

52 名前:デフォルトの名無しさん mailto:sage [04/02/19 18:26]
>>48
なるほど、dropはnが大きすぎると[]を返すんだね。
きれいなやりかただ。

で、35の関数はわかりやすさと効率を考えると
以下のものがいいということになる?

38とほぼ同じ。少し見やすくしてみた。
効率がいいのはこれなのかな。
それとnum < 0のときはデフォルトのエラーを起こすようにした。

k num = mapMaybe (takeOfMine num) . tails

takeOfMine 0 _ = Just []
takeOfMine n [] = Nothing
takeOfMine n (x:xs) = maybe Nothing (Just . (x:)) $ takeOfMine (n-1) xs

53 名前:デフォルトの名無しさん mailto:sage [04/02/19 18:39]
>>52
そんなもんかな。
# 個人的にはtakeOfMineは>>43のtakeJustのほうが
# Haskellらしくて好きだけどね。(48 == 43だったりする:-)

54 名前:デフォルトの名無しさん mailto:sage [04/02/19 19:02]
>>53
Maybe Monadってやつね。
僕も好きだな。
でもこっちのほうが好き。

takeJust n (x:xs) = do xs <- takeJust (n-1) xs
return (x:xs)

なんか手続き型言語に擬態してるかんじが好き。

55 名前:デフォルトの名無しさん mailto:sage [04/02/19 19:08]
なんだろ、インデントが重要な言語だと、困るよね。
どうしたらいいんだろう。
上の例ではreturn (x:xs)はxs <- takeJust ...にきっちり合わせないとエラー。

56 名前:by Chalice mailto:sage [04/02/19 19:30]
>>55
> なんだろ、インデントが重要な言語だと、困るよね。
いや、困らん。
…でも困る人は{...;..;.}って書けばいい。

とここまでかいて、他の人はIEとかで
プロポーショナルフォントでみているのだと気づいた。困るかも。

57 名前:デフォルトの名無しさん [04/02/19 21:47]
k 0 がポイント:

k 0 xs = [[]] ++ [[]|x <- xs]
k n xs = [x:y|(x,y) <- zip xs (k (n-1) (tail xs))]

58 名前:デフォルトの名無しさん mailto:sage [04/02/19 22:00]
>>56
  インデントを掲示板でちゃんと表示できたらいいと思ったからさ。

> takeJust n (x:xs) = do xs <- takeJust (n-1) xs
> return (x:xs)

こう書けばいいのかな。

59 名前:デフォルトの名無しさん mailto:sage [04/02/19 23:27]
>> 57
同じトピック内で同名関数が定義されたため、参照透明性が破られてしまいますた。

は冗談として、
m 1 xs = [[x] | x <- xs]
m n xs = [x:xs | (x,xs) <- zip xs $ m (n-1) $ tail xs]
でどうだろう。

60 名前:デフォルトの名無しさん mailto:sage [04/02/20 06:33]
>>57,59
かなりきれいな解法だと思う。
いままでで一番いいかも。



61 名前:デフォルトの名無しさん [04/02/20 13:47]
>>59
いや,f 0 にはそれなりの根拠があるので生かしておいて

f n [] = []
f n xxs@(x:xs) = top n xxs ++ f n xs
top 0 xs = [[]]
top n [] = []
top n (x:xs) = map (x:) $ top (n-1) xs

62 名前:デフォルトの名無しさん [04/02/20 13:52]
xxs@(x:xs)は不要なパターンでした

f n [] = []
f n xs = top n xs ++ f n (tail xs)
top 0 xs = [[]]
top n [] = []
top n (x:xs) = map (x:) $ top (n-1) xs


63 名前:デフォルトの名無しさん mailto:sage [04/02/20 16:24]
>>61
take* n ≒ top だね。map, ++ の使いかたあたりが微妙に遅そうにみえる。
>>57が綺麗でよさそう。
#  k 0 xs = []:[[]|x <- xs]
#  k n xs = zipWith (:) xs (k (n-1) (tail xs))

64 名前:デフォルトの名無しさん [04/02/20 16:29]
zipWith ... 忘れていたよ。


65 名前:35 mailto:sage [04/02/20 17:03]
>>36-64 みなさまありがとうございますm(_ _)m
私じゃぜんぜん思いつかないエレガントな解で、惚れ惚れいたしました。

66 名前:デフォルトの名無しさん [04/02/21 16:44]
どういたしまして。もう一つ:

f n xs = zipN $ take n $ tails xs
zipN xss = if any null xss then [] else map head xss : zipN (map tail xss)

ただし f 0 xs で暴走。

67 名前:(define (´∀`) 'マターリ) mailto:sage [04/02/22 10:08]
処理系が落ちてこないので、試さずに挑む。
f n xs = [[xs !! (x + y) | y <- [..n-1]] | x <- [..(length xs)-n]]

68 名前:デフォルトの名無しさん mailto:sage [04/02/22 11:23]
>>67
たぶん、
× [..n-1] [..(length xs)-n]
○ [0..n-1] [0..(length xs)-n]
でしょう。

この場合、僕がはじめに作った関数同様、
無限配列で使えないので解としては、やや劣ると思われます。
それと、いちいち(!!)を使うのは効率上どうなんだろうか。
処理系なしで作ったのならしかたないか。
普段はlispを使っているようですね。
はじめにいれる処理系はhugsがおすすめ。
多少なじんできたら、がんばってghcをいれるといいかも。

>>66
いいね。
これもわりと感動もんかも。
単純な処理だと思っても以外と奥が深いもんだな。

以下は別に新しい考えかたは何もないですが、
上のほうで作っていた関数を見やすくしてみました。

p n xs = if drop (n-1) xs == [] then [] else take n xs : p n (tail xs)

dropとtakeを両方使ってるあたりが泥臭いかも。
無限配列を扱えるもののなかで最も素直な解だと思う。どうかな。

69 名前:デフォルトの名無しさん mailto:sage [04/02/22 11:38]
>>68
しまった。
書き込んでから気付いたのだが、これだと
p :: Eq a => Int -> [a] -> [[a]]
になってしまう。
まあ、素直な解ということで許してほしい。

70 名前:デフォルトの名無しさん mailto:sage [04/02/22 11:53]
もうひとつ素直な解を。

# q n = filter ((==n).length) . k n
# where k _ [] = []
# k n xs = take n xs : k n (tail xs)

どうだろう。



71 名前:(define (´∀`) 'マターリ) mailto:sage [04/02/22 12:31]
f n xs = take ((length xs)-n+1) [take n x | x <- tails xs]

f n xs = filter ((==n).length) [take n x | x <- tails xs]

72 名前:デフォルトの名無しさん mailto:sage [04/02/22 17:17]
>>70
>>44の#と一緒。

73 名前:デフォルトの名無しさん [04/02/22 17:48]
>>71
> f n xs = filter ((==n).length) [take n x | x <- tails xs]

でも素直でわかりやすい。同じだけど:

f n xs = filter ((==n).length) $ map (take n) $ tails xs

「関数のn乗」って関数はなかったんでしたっけ:

f n xs = (iterate chop $ map (take n) $ tails xs) !! n
chop (x:xs) = if null xs then [] else x : chop xs

f n xs = map (take n) $ chopn n $ tails xs
chopn n xs = fst $ foldr _chopn ([], n) xs
where _chopn x (xs, n) = if n > 0 then (xs, n - 1) else (x:xs, 0)


74 名前:デフォルトの名無しさん mailto:sage [04/02/22 18:12]
>>73
「関数のn乗」 -> ない。
chop -> init 

> f n xs = map (take n) $ chopn n $ tails xs
> ....
無限リストに使えん。

気持ちは分かるんだが、
    新しい良いアイディアが含まれていなかったり、
    明らかに良くない方法だったりするものを
無闇に書き込むのは止めないか?(せめて欠点を併記するとか)

他の初心者が無分別に使うかもしれないし、
いいアイディアのものが埋もれる。
中級者以上(?)には面白くないし。

75 名前:デフォルトの名無しさん [04/02/22 18:59]
>>74
> 「関数のn乗」 -> ない。

なぜないんでしょう,あってもよさそうなのに。

> chop -> init

ありがとう。では直しておきます。

f n xs = (iterate init $ map (take n) $ tails xs) !! n

これは無限リストで大丈夫ですね。

> 新しい良いアイディアが含まれていなかったり、
> 明らかに良くない方法だったりするものを
> 無闇に書き込むのは止めないか?(せめて欠点を併記するとか)

欠点を併記するというのはいいですね。でも,今まで前を拾うこ
とばかりしいたから,今度は後ろを落としてみたらどうかという
発想なので「無闇に」というのとは違いますよ。

76 名前:デフォルトの名無しさん mailto:sage [04/02/22 19:20]
> 「関数のn乗」
手許に処理系ないんだけど、foldl とか (.) とかで簡単に作れそうな。

77 名前:74 mailto:sage [04/02/22 20:18]
>>75  
> 発想なので「無闇に」というのとは違いますよ。
失礼。
あなただけに書いたわけではなくて、>>70-71などを指していた。

> 「関数のn乗」
(iterate f x) !! n が普通なんだろうけど、
自分でtail recursiveな
nest :: (a -> b) -> a -> Int -> b
nest' :: (a -> b) -> a -> Int -> b  -- strict
あたりを書いたほうが、速くていいね。
標準にあったほうがいいというのに同意。

> 手許に処理系ないんだけど、foldl とか (.) とかで簡単に作れそうな。
foldlは無駄な処理をするのでまずい。
composition f n = foldr (.) id $ replicate n f
あたりか。

78 名前:74 mailto:sage [04/02/22 20:18]
最後は>>76宛。

79 名前:74 mailto:sage [04/02/22 20:19]
なんどもすまん。
  nest :: (a -> a) -> a -> Int -> a
だね。

80 名前:デフォルトの名無しさん [04/02/23 21:34]
>>77
> 標準にあったほうがいいというのに同意。
ですよね。標準でないのは f^n は複数の n に対して評価する
可能性があるのでリストにキャッシュしておけ,という主張か
とも思ったのですが。あっても悪くない気がします。


f n xs = (transpose $ map inits $ tails xs) !! n
(制限:n は xs のサイズ以下,無限リスト可)



81 名前:デフォルトの名無しさん mailto:sage [04/02/29 06:43]
なんとなくテクニックの紹介をしてみる。

Haskellのリストは一つの型しか保持できない。
しかし、複数の型であっても、その間に「関係」があれば、
それらの型をラップし、一つのリストにいれた上で使用することができる。
--------------
{-# OPTIONS -fglasgow-exts #-}
-- different types
data A = A String deriving Show
methA (A x) = length x
data B = B Int deriving Show
methB (B x) = x
-- but they have the methods of the same return type Int
data C = forall x. C x (x -> Int)
runC (C x f) = f x
testC = map runC [C (A "I am A") methA, C (B 100) methB]
-- if they belong to the same type class
data ShowC = forall x. (Show x) => ShowC x
instance Show ShowC where
    show (ShowC x) = show x
testShowC = show [ShowC $ A "I am A", ShowC $ B 100]
-- nearly nonsense
data X = forall x. X x

82 名前:デフォルトの名無しさん mailto:sage [04/03/03 22:00]
sage

83 名前:デフォルトの名無しさん [04/03/23 15:38]
GHC-6.2.1 released

84 名前:デフォルトの名無しさん mailto:sage [04/03/23 22:23]
Functional Programming With Haskell
www.amazon.com/exec/obidos/tg/detail/-/0077093305/

久々の新刊かも

85 名前:デフォルトの名無しさん mailto:sage [04/03/23 22:46]
>>84
豪快に割引されてますな。


86 名前:デフォルトの名無しさん mailto:sage [04/03/23 22:49]
前スレでガイシュツだったのか。
pc2.2ch.net/test/read.cgi/tech/1013846140/ #554
一年以上も前に。

87 名前:デフォルトの名無しさん mailto:sage [04/03/24 12:00]
wxHaskell使ってる人っている?

88 名前:デフォルトの名無しさん mailto:sage [04/03/24 16:27]
>>84
ペーパーバックで5000円か…

89 名前:デフォルトの名無しさん mailto:sage [04/03/25 06:54]
>>87
できあがる実行ファイルがでかすぎる

90 名前:デフォルトの名無しさん mailto:sage [04/03/30 23:30]
>>89
Minimulコードでどれぐらい?



91 名前:デフォルトの名無しさん mailto:sage [04/03/31 02:56]
>>90
@ Mac OS X 10.3

--- Hello.hs
module Main where
import Graphics.UI.WX

main :: IO ()
main = start hello

hello :: IO ()
hello =
   do
    f <- frame [text := "Hello world!"]
    quit <- button f [text := "Quit", on command := close f]
    set f [layout := widget quit]
---

$ ghc -package wx -o hello Hello.hs

で、helloのサイズが7M強。

92 名前:デフォルトの名無しさん mailto:sage [04/03/31 17:53]
stripして3M弱だな。

93 名前:デフォルトの名無しさん mailto:sage [04/04/03 19:31]
そりゃすげえな

94 名前:デフォルトの名無しさん [04/04/03 19:37]
よくしんねぇけど、
ツールキット全部そんなかに入ってんじゃないの?
だったら仕方ねぇと思うけど。
外出しには出来ねぇのかな?

95 名前:デフォルトの名無しさん mailto:sage [04/04/07 21:00]
GHC を ports の導入されていない FreeBSD に導入したいんだが
どうすればいいのだろう?

96 名前:デフォルトの名無しさん mailto:sage [04/04/07 21:11]
make install

97 名前:デフォルトの名無しさん mailto:sage [04/04/07 21:13]
a) portsを入れてmake install
b) packageを持ってきてpkg_add


98 名前:デフォルトの名無しさん mailto:sage [04/04/07 21:47]
みんなまずインタプリタで開発して、
安定してきてリリースする間際にコンパイラに移行するの?
インタプリタで正常動作してるけど、コンパイラではうまく動かないってこと多い?
Haskellってコンパイル撃遅い(というか長い)ッてきいたけどマジ?

99 名前:デフォルトの名無しさん mailto:sage [04/04/07 22:07]
>>96
GHC のコンパイルには GHC バイナリが必要です

>>97
ports や package は教育上入れてもらえない学生さんなんですよ

100 名前:デフォルトの名無しさん mailto:sage [04/04/08 14:25]
>>99
FreeBSD の ftp サーバの ports/distfiles に
ghc-<version>-i386-unknown-freebsd-boot.tar.bz2 があるからこれを展開して,
ghc のコンパイル時にこの展開先にある ghc を指定してコンパイルすればok.

ちなみに ports も同じことをしている(処理が自動化されてるだけ).

>>98
コンパイルはたしかに激遅.
プログラマが楽するためにコンピュータに頑張ってもらってる感があるね.



101 名前:デフォルトの名無しさん mailto:sage [04/04/08 15:40]
マニュアル印刷したいんだけど、1枚のHTMLにしてくんないかな。印刷しづらい。
www.sampou.org/haskell/report-revised-j/


102 名前:デフォルトの名無しさん mailto:sage [04/04/08 15:53]
>>101
そんなのちょこっとスクリプト走らせれば楽勝だろ?

103 名前:デフォルトの名無しさん mailto:sage [04/04/08 19:12]
>>98
> みんなまずインタプリタで開発して、
おれはそうしてる。GHCiでときどきHugsでチェック。

> インタプリタで正常動作してるけど、コンパイラではうまく動かないってこと多い?
そんな経験は無い。

104 名前:デフォルトの名無しさん mailto:sage [04/04/08 20:10]
>>100
ありがとう

試してみてうまくいったらまた報告します

105 名前:デフォルトの名無しさん mailto:sage [04/04/08 22:55]
NHCの方が良質のコードを生成するって聞いたことあるけど、
もう今は昔の話なのかな?

106 名前:デフォルトの名無しさん mailto:sage [04/04/08 23:14]
このスレでも聞いてみる。
Scheme,OCaml,Haskell,Clean、覚えて「損しない」「一番得」
な言語はどれ。ぶっちゃけ周辺ライブラリーが充実してるのどれ。

107 名前:デフォルトの名無しさん mailto:sage [04/04/08 23:20]
>>106
得するのは、全部覚えること。
得しないのは、ひとつしか覚えないこと。

108 名前:デフォルトの名無しさん mailto:sage [04/04/08 23:54]
>>106
若いなら全部やれ

109 名前:デフォルトの名無しさん mailto:sage [04/04/09 00:27]
>>105
コンパイルは速いけどね。
Hugs/GHC共通のHierachical moduleの多くが使えないのが痛すぎる。

今試しに
main = interact id
をnhc98(FreeBSD-CURRENT, from ports)でコンパイルしたらbus error....

110 名前:デフォルトの名無しさん mailto:sage [04/04/09 00:34]
r抜けてたHierarchical



111 名前:デフォルトの名無しさん mailto:sage [04/04/12 16:54]
>>106
統計やるならRが結構ナイスだ。

112 名前:デフォルトの名無しさん mailto:sage [04/04/12 22:37]
>>110-111
Rスレはこっちに↓あ〜る

= 統計解析フリーソフト R =
science2.2ch.net/test/read.cgi/math/1062650510/

113 名前:デフォルトの名無しさん [04/04/14 12:02]
工科大の
www.teu.ac.jp/kougi/koshida/Prog6/Text08/index.html
の問題1 ですが、

> sigma :: (Int -> Int) -> (Int -> Int)
> 上記の関数sigmaを,1) ラムダ記法を使って,2) 関数の部分適用を使って,定義せよ.ただし,sigma fは,自然数nに対して
> f 0 + f 1 + ... + f n
> を計算する関数とする.

lambda 版 は以下のように作成しました。
sigmaLambda :: (Int -> Int) -> (Int -> Int)
sigmaLambda f = \x -> sum [f i | i <- [0 .. x]]

で、部分適用版ですが、

sigma :: (Int -> Int) -> Int -> Int
sigma f 0 = f 0
sigma f n = sigma f (n-1) + f n

で、いいんでしょうか。
題意のような関数を返すのですが、部分適用という感じがしません。
出題者がどのような回答を期待しているか知りたいのですが。
(あと、なんか lambda版を、内包表現とか使ってて、出題意図に沿ってないような気がするのです)

114 名前:デフォルトの名無しさん mailto:sage [04/04/14 13:37]
>>113
> 題意のような関数を返すのですが、部分適用という感じがしません。
addNum'' n m = n + m に部分適用を使ったといっているのだからそれでいいだろう。
sigmaPartial f n = sum [f m | m <- [0..n]]

> (あと、なんか lambda版を、内包表現とか使ってて、出題意図に沿ってないような気がするのです)
それなら使わなければいいのでは?
sigmaLambda = \f n -> if n == 0 then f 0 else sigmaLambda f (n - 1) + f n

115 名前:デフォルトの名無しさん [04/04/14 14:00]
sigma,sigma' :: (Int -> Int) -> (Int -> Int)
sigma f = \ n -> foldl (\ s i -> s + f i) 0 [0..n]
sigma' f = let iter s x = if x < 0 then s else iter (s+f x) (x-1) in iter 0

116 名前:デフォルトの名無しさん mailto:sage -- "let" sucks! [04/04/14 14:37]
import Control.Monad.Fix (fix) -- fix f = f (fix x)
sigma = flip fix 0 $ \s t f n -> if n < 0 then t else s (t + f n) f (n - 1)

117 名前:デフォルトの名無しさん mailto:sage [04/04/14 14:38]
fix f = f (fix f)ね。

118 名前:デフォルトの名無しさん mailto:sage [04/04/19 19:21]
Haskell に例外処理の機構はあるの?

119 名前:デフォルトの名無しさん mailto:sage [04/04/19 19:37]
ある。
Haskell98でもIOモナドからthrowできる例外(IOError)があるし、
最近のGHC、Hugsでは普通の関数からも例外(Exception)をthrowできる。
catchはIOモナドの中でおこなう。

参照: Control.Exception

120 名前:デフォルトの名無しさん mailto:sage [04/04/20 23:50]
Haskell勉強中なんですけど、
「モナドは継続渡しを提供する」という大雑把な理解でいいでしょうか?
・・・違うかな?



121 名前:デフォルトの名無しさん mailto:sage [04/04/24 22:23]
なんで Prelude で (!!) は Integer じゃなくて Int で定義されているの?

122 名前:デフォルトの名無しさん mailto:sage [04/04/25 02:07]
>>121
実際問題それ以上使うことはないからだろう。
Haskell 98 Report によると maxBound::Int は少なくとも 2^29-1。
(!!)のインデックスは0-originだから、長さ2^29のリストまで扱える。
これ以上の長さのリストを使う場面は……。

123 名前:デフォルトの名無しさん mailto:sage [04/04/25 12:41]
円周率の世界記録に朝鮮したい人はどうすれば?

124 名前:デフォルトの名無しさん mailto:sage [04/04/25 18:11]
>>123
自分で最低義すれ。

125 名前:デフォルトの名無しさん mailto:sage [04/04/26 14:54]
>>123
円周率は全桁保持していなくても次を計算できたはず。

>>124
アドレスの制限があるから多くの計算機と既存の処理系では
再定義しても無駄。

126 名前:デフォルトの名無しさん mailto:sage [04/04/26 23:48]
>>120 こんなん見つけた

ttp://www.jaist.ac.jp/~kiyoshiy/writing/wadler_essenceoffunctionalprogramming.pdf

ここの資料はjaistのゼミ資料?
他にはHaskellDBが自分的に興味深い.
TorqueとかHibernateなんて目じゃない. Haskellだけど…

127 名前:デフォルトの名無しさん mailto:sage [04/04/27 14:27]
>>121
haskell@でもちょうど議論されてるね。
上ででたものの他に、こういう意見があった。

Integer派:
*   Lazyにcreated/destroyedなデータならアドレスの制限を
    受けずに大きいものを利用できるはずだ。
*   Intは一般的なケースへの最適化であり、
    "Premature optimization is the root of all evil."

Integerには反対派:
    Integerにするのは、巨大なリストという特殊な状況への最適化である。
    (Integral b) => がよろしい。

128 名前:デフォルトの名無しさん mailto:sage [04/04/27 18:46]
Hanatani さんすげーな。
オレもああいう凄腕Haskellerになりたい。

129 名前:デフォルトの名無しさん mailto:sage [04/04/28 12:39]
>>128
なんか凄いもの作ったの?

130 名前:デフォルトの名無しさん mailto:sage [04/05/05 01:32]
しばらく見ないうちに「関数型言語」のスレがひどいことになってるな。




131 名前:デフォルトの名無しさん mailto:sage [04/05/05 02:34]
>>130
Aranskさま〜〜早くこのスレにも御光臨してくださいませ〜〜
Aranskさま〜〜早くこのスレにも御光臨してくださいませ〜〜
Aranskさま〜〜早くこのスレにも御光臨してくださいませ〜〜
Aranskさま〜〜早くこのスレにも御光臨してくださいませ〜〜
Aranskさま〜〜早くこのスレにも御光臨してくださいませ〜〜

132 名前:デフォルトの名無しさん [04/06/27 22:34]
たま〜にはあげてみる

Haskell Support for the Eclipse IDE
eclipsefp.sourceforge.net/

0.3.0はEclipse最新var.(M9〜正式版)に対応しているぞ。

133 名前:デフォルトの名無しさん [04/06/30 18:10]
おお. しかしスクリーンショットがほしい所かも. 後でインスコしてみるか…

Fudgets
www.cs.chalmers.se/Cs/Research/Functional/Fudgets/

触ってる人いる? これから弄ってみようと思うのだけど.

featureのページに,
Declarative flavour. While it is possible to enable GUI programming in
a functional language by providing an interface to an imperative GUI toolkit and,
in effect, using an imperative sub-language within the functional language,
Fudgets provide a declarative style of programming also for the construction of GUIs.

とある. なんだか期待大.

134 名前:デフォルトの名無しさん mailto:sage [04/06/30 20:48]
>>133
使えたら是非おしえてくれ。
Declarative GUI toolkitって数年前から
どれもメンテが止まってるっぽいんだよな。

最近ではwxHaskellがスタンダードになりつつあるけど、
やっぱりHaskellならDeclarativeにやりたい。

135 名前:デフォルトの名無しさん [04/07/17 08:42]
Haskell Marathon
www.sampou.org/cgi-bin/cahier.cgi

136 名前:デフォルトの名無しさん mailto:sage [04/07/18 09:25]
Haskell で Marathon を実装するのかとオモタ。

137 名前:デフォルトの名無しさん mailto:sage [04/07/26 01:14]
マラソン参加してみようかな。入門ページ読んだくらいで準備はよいだろうか

138 名前:デフォルトの名無しさん mailto:sage [04/07/29 09:20]
マラソン直前に台風直撃の悪寒

139 名前:デフォルトの名無しさん mailto:sage [04/08/09 23:33]
LL WeekendでのHaskellに対する聴衆の感想は「Haskellのコードはよくわからない」というのが多かったみたいでつね

140 名前:デフォルトの名無しさん mailto:sage [04/08/10 01:19]
5分だか7分だかでわかれという方が無理があるという話がある。発表者陣はよ
くやったと思うよ。
「わたしはもうループも書けなくなってしまって……」というのにワロタ。



141 名前:デフォルトの名無しさん mailto:sage [04/08/11 02:33]
LL侍はHaskellを斬ったの?

142 名前:デフォルトの名無しさん mailto:sage [04/08/12 01:39]
>>141
「Hello, worldもブラックボックス斬り」されてました。

143 名前:デフォルトの名無しさん mailto:sage [04/08/12 13:41]
おれはhaskell haskell haskellだ
関数型の haskellだ
短くて 簡潔で 理解しやすいコードを書けるぜ
って、言うじゃない

だけど
難しくて monad が理解できませんから

残念!
「Hello worldさえブラックボックス」
斬り

144 名前:デフォルトの名無しさん [04/08/12 20:55]
むしろHello, worldだから難しいような気がする


145 名前:デフォルトの名無しさん mailto:sage [04/08/12 21:58]
main = do putStr "Hello, World!"

で済むから、コード自体は特に難しくは見えない。
ただ、入門者が Hello, World に到達するまでの過程が難しいんだよね……。


146 名前:デフォルトの名無しさん mailto:sage [04/08/12 22:00]
>>145
そのdoはいるの?

147 名前:145 mailto:sage [04/08/12 23:13]
この場合はいらないけど、先々のことを考えたら入れた方がいいかな、とちょっ
とだけ思ったのです。
main = do str <- getLine
putStr str
みたいに。


148 名前:デフォルトの名無しさん mailto:sage [04/08/13 07:57]
いきなりIOから入るのがまずい。
fact→fib→qsortあたりから入れば
得体の知れないモナドをとりあえず回避できる。

149 名前:デフォルトの名無しさん mailto:sage [04/08/13 16:25]
再帰とリスト処理しかできないHaskellちゃん
がんばってもせいぜい二分木

150 名前:デフォルトの名無しさん mailto:sage [04/08/13 17:34]
膣門です。
"Hindley-Milner" って、何て読むんでつか?




151 名前:デフォルトの名無しさん mailto:sage [04/08/14 01:49]
誰か「モナドだけで書く Haskell プログラミング」を書いてくれい

152 名前:デフォルトの名無しさん mailto:sage [04/08/15 13:29]
>>151 Cでも使ってれば?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<259KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef