[過去ログ] 関数型プログラミング言語Haskell Part16 (978レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
69: デフォルトの名無しさん [sage] 2011/10/10(月) 11:36:31.61 AAS
>>67
67(1): デフォルトの名無しさん [sage] 2011/10/10(月) 11:34:39.46 AAS
HaskellよりCのほうが難しいと言ってる人は大抵
どっちの言語でもHallo Worldくらいのプログラムしか書けない
誹謗中傷だろ、それ。
85: 中2 [] 2011/10/10(月) 15:58:57.61 AAS
Haskellはじめたよ
はじめた理由聞きたいかな?
88: ◆QZaw55cn4c [sage] 2011/10/10(月) 18:43:59.61 AAS
>>87
87(1): デフォルトの名無しさん [sage] 2011/10/10(月) 18:34:37.05 AAS
おすすめのグラフ作成パッケージありますか?
gnuplotやchartを使ってますが
他にあれば知りたいです
R と答えてほしいのかな?
外部リンク:ja.wikipedia.org
107: デフォルトの名無しさん [sage] 2011/10/12(水) 22:24:44.61 AAS
7.4までお預けですねわかります・・・
116
(1): デフォルトの名無しさん [sage] 2011/10/14(金) 07:42:48.61 AAS
モジュール内の全ての関数と、import した地のモジュール M を全て公開したいのですが、
その場合は module モジュール名 (***) where の *** の部分に、
関数全てと module M を明示的に記入しないといけないのでしょうか

全ての関数だけなら、 (***) を省略することで全て公開しますが、
import したモジュールもとなると省略記法がわかりません
376: デフォルトの名無しさん [sage] 2011/11/06(日) 01:25:51.61 AAS
外部リンク:repa.ouroborus.net これも使えそうと思ってブックマークしてる。
457: デフォルトの名無しさん [sage] 2011/11/10(木) 23:17:35.61 AAS
>>456
456(1): デフォルトの名無しさん [sage] 2011/11/10(木) 22:48:37.04 AAS
>>441は何も質問してないのに回答とかよくわからん
俺は>>442に対する>>443の回答に反論してるだけだよ
ん、んんん?
だったら、>>450
450(2): デフォルトの名無しさん [sage] 2011/11/10(木) 21:24:40.76 AAS
>>449
自作の関数作るときとかは、型推論に任せるより自分で決めた方が速かったり、逆に遅い代わりに大きな数を扱えたりする
length関数と同じ機能の関数mylength作るとき、

mylength [] = 0
mylength (_:ns) = 1 + mylength ns

の型は[a]->aだが、

mylength::[a]->Int
mylength [] = 0
mylength (_:ns) = 1 + mylength ns

とすれば、当然ながら型は[a]->Intになる
の通り、先に型を書けば防げてるだろ?
(^(2::Int))は併用すればいい話じゃね?
ごちゃ混ぜに話すなよ
557: デフォルトの名無しさん [sage] 2011/11/15(火) 01:16:49.61 AAS
>>546
546(1): デフォルトの名無しさん [sage] 2011/11/14(月) 22:09:25.28 AAS
出番だ、>544
いや、自分、基本バカだから
数学やりたかったんじゃなくて、+演算子を自分で作りたかっただけだから
717: デフォルトの名無しさん [sage] 2011/12/18(日) 08:00:51.61 AAS
少なくともGUIでは終わってる
HaskellでまともにGUIのガワが作れるようになるのはC++11がまともに使えるようになるよか遅いだろうね
785: 778 [sage] 2011/12/22(木) 12:54:37.61 AAS
>>783,784
783(2): 778 [sage] 2011/12/22(木) 07:55:25.77 AAS
途中でレスってしまった

>>780 に指摘されて修正案を考えてる時に、
全然違うアイデアが思い浮かんだんだが、
これは今まで出てきたかな(特に >>771 と同類か)

listA から x の位置を探す
x の位置の直後から listB の要素数分の要素をリストとして取り出す listC
x が listB に無い場合、head listB が listC に有れば「前」
head listB が listC に無ければ「後ろ」
784(1): 778 [sage] 2011/12/22(木) 08:55:12.79 AAS
>>783
訂正

> x の位置の直後から listB の要素数分の要素をリストとして取り出す listC

x の位置の直後から末端までをリストとして取り出す listC
式にするとこんな感じ

whereIncluded :: (Eq a) => [a] -> [a] -> a -> Where
whereIncluded as bs@(b:_) x
| elem x bs = Here
| elem b as' = After
| otherwise = Before
where as' = takeWhile (/=x) as

ダサいかな
787: デフォルトの名無しさん [sage] 2011/12/22(木) 21:36:01.61 AAS
QuickCheck を調べてて、ステキなリファクタリング テクニックに出会った
外部リンク:www.haskell.org

リファクタリング前は(インデントに全角スペースを入れた)、

getList = find 5 where
  find 0 = return []
  find n = do
   ch <- getChar
   if ch `elem` ['a'..'e'] then do
      tl <- find (n-1)
      return (ch : tl) else
     find n

というコードなんだが、副作用がある処理と無い式とが混ざっててテストし難い
(また、全体の処理もぱっと見分かりにくい)

これがリファクタリングで次のようになる

getList :: IO [Char]
getList = fmap take5 getContents

take5 :: [Char] -> [Char]
take5 = take 5 . filter (`elem` ['a'..'e'])

ちょっと感動した
こういうことがサラっとできるようになりたいもんだ
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.045s