関数型プログラミング言語 Haskell について語るスレです。
haskell.org (公式サイト)
http://www.haskell.org/
前スレ
関数型プログラミング言語Haskell Part28
http://echo.2ch.net/test/read.cgi/tech/1428597032/
探検
関数型プログラミング言語Haskell Part30 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/01/15(日) 23:43:54.28ID:Vh4eztBk
496デフォルトの名無しさん
2017/05/18(木) 14:10:00.91ID:TSzqrQQ0 >>487
forceはリストの背骨までしか評価しない。
つまり
xs=[1,2,3,4,5]
が
xs=[_,_,_,_,_]
と評価される。
でも、そのforceもリストが評価されるまで動かない。。。
マジで並列化と遅延評価は相性悪い。
forceはリストの背骨までしか評価しない。
つまり
xs=[1,2,3,4,5]
が
xs=[_,_,_,_,_]
と評価される。
でも、そのforceもリストが評価されるまで動かない。。。
マジで並列化と遅延評価は相性悪い。
497デフォルトの名無しさん
2017/05/18(木) 15:07:11.90ID:S+9vOUwt いやControl.DeepSeqのforceは再帰的に評価する
というのもリストのNFDataインスタンスはNFData a => NFData [a]だからね
head $ head $ force [[1,undefined]] はエラー
というのもリストのNFDataインスタンスはNFData a => NFData [a]だからね
head $ head $ force [[1,undefined]] はエラー
498デフォルトの名無しさん
2017/05/18(木) 17:35:00.25ID:znop8OGf force自体は何も特別では無くて遅延評価される
但し、force関数の評価時に本来はWHNFまでしか評価しない状況でもNFまで完全評価するって感じか
但し、force関数の評価時に本来はWHNFまでしか評価しない状況でもNFまで完全評価するって感じか
499デフォルトの名無しさん
2017/05/20(土) 05:58:24.02ID:7XmC+xMs http://faithandbrave.hateblo.jp/entry/20111201/1322718742
GADTs拡張で、空でないリストを前提にコーディングできるみたいですけど、
これって、静的に空でない事が判明してないと呼び出せないんですか?
空か入ってるか判らないリストについては使えないってこと?
凄い使いにくそう
GADTs拡張で、空でないリストを前提にコーディングできるみたいですけど、
これって、静的に空でない事が判明してないと呼び出せないんですか?
空か入ってるか判らないリストについては使えないってこと?
凄い使いにくそう
500デフォルトの名無しさん
2017/05/20(土) 06:15:33.02ID:eorHP7jS NonEmptyは何かしらのモデリングを行うときにパラメータが非空リストであるといった内部で生じる条件を明に扱えるようにするためのものかと思ってる
インポートした関数をつなぎ合わせるだけの部分で便利なものではない
インポートした関数をつなぎ合わせるだけの部分で便利なものではない
501デフォルトの名無しさん
2017/05/20(土) 18:25:30.00ID:SgRoQNx5 printf関数は副作用のある出力関数じゃなくて、フォーマット済みの文字列返すだけの副作用のない関数にして欲しかった。。。
502デフォルトの名無しさん
2017/05/20(土) 18:29:29.96ID:1KTJ7Tkv sprintfよろ
503デフォルトの名無しさん
2017/05/20(土) 18:59:49.62ID:SgRoQNx5 本当、それ欲しい->sprintf
504デフォルトの名無しさん
2017/05/20(土) 19:27:54.16ID:3Ne2dZP6 import Text.Printf
genMsg :: String -> String
genMsg name = printf "Hello, %s-san!" name
main :: IO ()
main = do
name <- getLine
putStrLn $ genMsg name
genMsg :: String -> String
genMsg name = printf "Hello, %s-san!" name
main :: IO ()
main = do
name <- getLine
putStrLn $ genMsg name
505デフォルトの名無しさん
2017/05/20(土) 20:25:36.74ID:HYrvvmg5 ん?
もしかしてread関数みたく型指定したらいけるって事け?
テキストに行番号振るナンバリング関数で数字と文字列のタプル受け取って文字列返すラムダ式をconcat[show x,str]から書き換えたらエラー出たんだけど、型指定で行けるなら再挑戦して見るかな。。。
もしかしてread関数みたく型指定したらいけるって事け?
テキストに行番号振るナンバリング関数で数字と文字列のタプル受け取って文字列返すラムダ式をconcat[show x,str]から書き換えたらエラー出たんだけど、型指定で行けるなら再挑戦して見るかな。。。
506デフォルトの名無しさん
2017/05/20(土) 20:37:45.54ID:/vBlyS11 printfはほんと実装どうなってんのって感じ
507デフォルトの名無しさん
2017/05/20(土) 20:41:46.24ID:HYrvvmg5 実装自体はHoogleで調べたら見れるけど、見ても分からんかった記憶がある。
508デフォルトの名無しさん
2017/05/20(土) 21:15:44.41ID:ZfDONXvK a=>PrintfArg、b=>PrintfTypeのとき、
String -> bはPrintfTypeである
a -> bもPrintfTypeである
StringもPrintfTypeである
IO ()もPrintfTypeである
…を繋ぐと動くんだったかな
String -> bはPrintfTypeである
a -> bもPrintfTypeである
StringもPrintfTypeである
IO ()もPrintfTypeである
…を繋ぐと動くんだったかな
509デフォルトの名無しさん
2017/05/21(日) 06:36:57.09ID:YZtqITyu 型指定で行けたわ。
>>504thanks!!
import System.Environment
import Text.Printf
-- 数値型を文字列型に変換して文字列の頭に追加
consNum::(Int,String) -> String
consNum (x,s) = printf "%4d:%s" x s
-- 文章の行ごとに番号を振る
numbering = unlines.(map consNum).(zip [1..]).lines
-- ファイル名と内容(行番号付き)のタプルを作る
zipFile_Content f = (zip f).map numbering
-- ファイル名とファイルの内容を表示
putFile_Content (f,c) = printf "%s\n%s" f c
main = do
args <- getArgs -- コマンドから与えられたファイルのリストを受け取る
cs <- mapM readFile args -- 全てのファイルの内容を読み込む
mapM_ putFile_Content $ zipFile_Content args cs -- 全てのファイルのファイル名と内容(行番号付き)を表示
>>504thanks!!
import System.Environment
import Text.Printf
-- 数値型を文字列型に変換して文字列の頭に追加
consNum::(Int,String) -> String
consNum (x,s) = printf "%4d:%s" x s
-- 文章の行ごとに番号を振る
numbering = unlines.(map consNum).(zip [1..]).lines
-- ファイル名と内容(行番号付き)のタプルを作る
zipFile_Content f = (zip f).map numbering
-- ファイル名とファイルの内容を表示
putFile_Content (f,c) = printf "%s\n%s" f c
main = do
args <- getArgs -- コマンドから与えられたファイルのリストを受け取る
cs <- mapM readFile args -- 全てのファイルの内容を読み込む
mapM_ putFile_Content $ zipFile_Content args cs -- 全てのファイルのファイル名と内容(行番号付き)を表示
510デフォルトの名無しさん
2017/05/21(日) 06:53:36.19ID:YZtqITyu この長さならputFile_Contentをラムダ式に戻しても良いな。
511デフォルトの名無しさん
2017/05/21(日) 07:21:47.89ID:NQzGLOFd >>506
可変長引数の仕組みはこんな感じ
class Count r where count :: Int -> r
instance Count Int where count n = n
instance (Count r) => Count (a -> r) where count n = const (count (n+1))
countArgs = count 0
main = print $ (countArgs 1 True "a" :: Int)
可変長引数の仕組みはこんな感じ
class Count r where count :: Int -> r
instance Count Int where count n = n
instance (Count r) => Count (a -> r) where count n = const (count (n+1))
countArgs = count 0
main = print $ (countArgs 1 True "a" :: Int)
512デフォルトの名無しさん
2017/05/22(月) 19:08:38.92ID:5O5zI7xX >>511
これcountArgは型推論で型解決されてるの?
これcountArgは型推論で型解決されてるの?
513デフォルトの名無しさん
2017/05/22(月) 22:52:47.32ID:8pBxEsLa 1 2 3みたいなコードのエラーメッセージを見るに
関数適用で引数分の関数だと推論されるんだろうね
関数適用で引数分の関数だと推論されるんだろうね
514デフォルトの名無しさん
2017/05/23(火) 10:24:38.23ID:3W0XlzKr Haskell - GHC for iOS : iOSアプリをHaskellで開発する
http://blog.euphonictech.com/entry/2015/01/26/210101
GUIはObjective-Cに任せて中身はHaskell。
テーブルゲーム系は作りやすい言語だから、案外向いてるかも。。。
http://blog.euphonictech.com/entry/2015/01/26/210101
GUIはObjective-Cに任せて中身はHaskell。
テーブルゲーム系は作りやすい言語だから、案外向いてるかも。。。
515デフォルトの名無しさん
2017/05/23(火) 14:48:19.87ID:f1Q/bDWm Androidは?
516デフォルトの名無しさん
2017/05/23(火) 17:25:53.49ID:PJIONmxy haskell androidでググったらトップで出るお。
Ubuntuなら最初の辺りは省けそう。
cabalじゃなくてstack入れた上でcabalへのパス通す方向で行った方が失敗少なそう。
Ubuntuなら最初の辺りは省けそう。
cabalじゃなくてstack入れた上でcabalへのパス通す方向で行った方が失敗少なそう。
517デフォルトの名無しさん
2017/05/23(火) 19:23:10.81ID:jde/WziY ghc ios弄ってるよ。
7.8のghcは32bits版はghc公式のサイトにある。64bits のghc iosバイナリは公開されてない。
Appleのお達しにより64bitsを同梱しなければApp Storeにリリース出来ない。
HEADは試してないけど、3/27のソースではビルドは通った(ちなみにそのソースでは32bitsは素直に通らない)。
64bits のghc iosは現在活発にメンテされているようです。
俺は今は make binary-dist (つまり、ghc-....tar.xzを作るやつ)と、stackを直しています。
stackはcross compiler対応してないので、改造が必要なんだ。stack setup --os ios で一発インストールできるとこまで持っていきたい。
> cabalじゃなくてstack入れた上でcabalへのパス通す方向で行った方が失敗少なそう。
そのワークアラウンドは思いつかなかった。詳しくおしえてくれませんか。
7.8のghcは32bits版はghc公式のサイトにある。64bits のghc iosバイナリは公開されてない。
Appleのお達しにより64bitsを同梱しなければApp Storeにリリース出来ない。
HEADは試してないけど、3/27のソースではビルドは通った(ちなみにそのソースでは32bitsは素直に通らない)。
64bits のghc iosは現在活発にメンテされているようです。
俺は今は make binary-dist (つまり、ghc-....tar.xzを作るやつ)と、stackを直しています。
stackはcross compiler対応してないので、改造が必要なんだ。stack setup --os ios で一発インストールできるとこまで持っていきたい。
> cabalじゃなくてstack入れた上でcabalへのパス通す方向で行った方が失敗少なそう。
そのワークアラウンドは思いつかなかった。詳しくおしえてくれませんか。
518デフォルトの名無しさん
2017/05/23(火) 19:32:03.75ID:5hEoQuZK え、cabalって書いてるところをstackに置き換えるけど、パス通す時cabalへのパスって言う、非常に単純で頭の悪いやり方だが。。。
単純にcabalが依存関係で止まる確率下がらないかなぁと。
単純にcabalが依存関係で止まる確率下がらないかなぁと。
519デフォルトの名無しさん
2017/05/23(火) 22:54:19.25ID:jde/WziY >>518
なるほど。俺が勘違いしているのでなければ、
http://ipx.hatenablog.com/entry/2015/05/02/093634
のページのajhcをcabal install するときの話ですね。
うちの環境はMacなのでためせないのだけど、hackageにあるajhcのcabalファイルをみると依存パッケージのバージョン指定がほぼ無いので、ひょっとするとビルド通るかも。
少なくともstackの方がcabalよりは可能性高そうですね。
スマホ開発について、俺はajhcを使うアプローチは試してないのですが、他にもGHCjsを使ってjavascriptに落とした後、
PhoneGapとかで埋め込む、って手もありそうです。
なるほど。俺が勘違いしているのでなければ、
http://ipx.hatenablog.com/entry/2015/05/02/093634
のページのajhcをcabal install するときの話ですね。
うちの環境はMacなのでためせないのだけど、hackageにあるajhcのcabalファイルをみると依存パッケージのバージョン指定がほぼ無いので、ひょっとするとビルド通るかも。
少なくともstackの方がcabalよりは可能性高そうですね。
スマホ開発について、俺はajhcを使うアプローチは試してないのですが、他にもGHCjsを使ってjavascriptに落とした後、
PhoneGapとかで埋め込む、って手もありそうです。
520デフォルトの名無しさん
2017/05/24(水) 00:32:17.87ID:NrN6swuV GHCjsなんてあったんだ。。。
fayってのはどこかのブログで見かけたけど。
fayってのはどこかのブログで見かけたけど。
521デフォルトの名無しさん
2017/05/24(水) 21:57:13.55ID:NmDuToTQ 数値が書かれた文字列の大きさを比べたりソートするときってIntに変換しなくても大丈夫?
522デフォルトの名無しさん
2017/05/24(水) 22:29:07.75ID:yk/rwiNc523デフォルトの名無しさん
2017/05/24(水) 22:31:16.66ID:yk/rwiNc ただし後者は…読めない
524デフォルトの名無しさん
2017/05/24(水) 22:54:24.29ID:YpWp2KMv a="1000"とb="999"を比べるとして、
頭から3桁目までを比べるとbのほうが大きい
けどaにはまだ続きがあってbには続きがない、だからaが大きい
こんなアルゴリズムだったような
頭から3桁目までを比べるとbのほうが大きい
けどaにはまだ続きがあってbには続きがない、だからaが大きい
こんなアルゴリズムだったような
525デフォルトの名無しさん
2017/05/25(木) 00:11:42.62ID:izfj8ylF526デフォルトの名無しさん
2017/05/25(木) 00:33:59.08ID:Q9+DetqO527デフォルトの名無しさん
2017/05/25(木) 00:46:54.13ID:ZBW/Sl3S みんなありがとう
read :: String -> Intって書くのがめんどくさくて楽したかっただけなんだ
めんどくさがらずにちゃんとやるよ
read :: String -> Intって書くのがめんどくさくて楽したかっただけなんだ
めんどくさがらずにちゃんとやるよ
528デフォルトの名無しさん
2017/05/25(木) 01:31:24.27ID:fGPRo4Tg naturalcompを入れた場合、
Prelude> :m +Data.List Text.NaturalComp
Prelude Data.List Text.NaturalComp> naturalComp "1000" "999"
GT
Prelude Data.List Text.NaturalComp> sortBy naturalComp ["1","99","1000","10","999","9"]
["1","9","10","99","999","1000"]
だいたい思ったとおりになると思うが
Prelude> :m +Data.List Text.NaturalComp
Prelude Data.List Text.NaturalComp> naturalComp "1000" "999"
GT
Prelude Data.List Text.NaturalComp> sortBy naturalComp ["1","99","1000","10","999","9"]
["1","9","10","99","999","1000"]
だいたい思ったとおりになると思うが
529デフォルトの名無しさん
2017/05/25(木) 09:09:45.17ID:ob559wKW530デフォルトの名無しさん
2017/05/25(木) 11:03:59.19ID:izfj8ylF >>529
こんな簡単なことで外部ライブラリに依存とかしたくないでしょ
こんな簡単なことで外部ライブラリに依存とかしたくないでしょ
531デフォルトの名無しさん
2017/05/25(木) 11:22:28.03ID:jD8c7u6v まあねぇ。
んじゃあ桁ごとにグループ分けして、それぞれをソートして、その後結合?
んじゃあ桁ごとにグループ分けして、それぞれをソートして、その後結合?
532デフォルトの名無しさん
2017/05/25(木) 11:41:35.46ID:XfbQ4lvY533デフォルトの名無しさん
2017/05/25(木) 13:06:15.57ID:jD8c7u6v 昔のHaskellの(1+n)形式の引数復活しないかな。。。
代数的データ型で自然数作ったりの時、普通の関数だとこう。みたいな整合性が取れないのがね。。。
type Nat = Succ(Nat) | Zero
dec (succ(n)) = n
dec(Succ(Zero))
>Zero
dec (1 + n) = n
dec 1
>0
代数的データ型で自然数作ったりの時、普通の関数だとこう。みたいな整合性が取れないのがね。。。
type Nat = Succ(Nat) | Zero
dec (succ(n)) = n
dec(Succ(Zero))
>Zero
dec (1 + n) = n
dec 1
>0
534デフォルトの名無しさん
2017/05/25(木) 14:02:18.77ID:XfbQ4lvY >>533
どんな時に代数的データ型で自然数を作るの?
どんな時に代数的データ型で自然数を作るの?
535デフォルトの名無しさん
2017/05/25(木) 18:02:15.54ID:KkJBSxnE お遊びの時。
だから無くても困らないけど、昔あったの知ってると復活しないかな。。。と。
だから無くても困らないけど、昔あったの知ってると復活しないかな。。。と。
536デフォルトの名無しさん
2017/05/26(金) 00:23:29.72ID:lBtW1IaY {-# LANGUAGE NPlusKPatterns #-}
537デフォルトの名無しさん
2017/05/26(金) 02:18:52.31ID:NvS9muX6 何!!
復活の呪文あるんか!!
復活の呪文あるんか!!
538デフォルトの名無しさん
2017/05/26(金) 03:26:42.35ID:NvS9muX6 dec (n + 1) = n
は通るけど
dec (1 + n) = n
は通らない。。。
なんかモヤモヤ。。。
は通るけど
dec (1 + n) = n
は通らない。。。
なんかモヤモヤ。。。
539デフォルトの名無しさん
2017/05/26(金) 06:58:01.57ID:57q7qnDF Haskellerこっわ
https://twitter.com/ncaq/status/867682756821565441
https://twitter.com/ncaq/status/867682756821565441
540デフォルトの名無しさん
2017/05/26(金) 07:45:17.70ID:npmNm3qp NPlusK ゆうとるやろが
541デフォルトの名無しさん
2017/05/26(金) 08:02:14.29ID:BGbWYOFh だからKPlusNを追加したら、ンなもんねーよって怒られた。。。
あるだけ有難いけどね。
あるだけ有難いけどね。
542デフォルトの名無しさん
2017/05/26(金) 08:07:54.48ID:BGbWYOFh >>539
Haskell使いって入ってるだけで、コードも何も語ってないやん。
はてなのHaskellerは優秀で良い人ばかりだお。
おいらは優秀じゃないし、プログラミング自体からほとんど引退してるからやめたけど。
Haskell使いって入ってるだけで、コードも何も語ってないやん。
はてなのHaskellerは優秀で良い人ばかりだお。
おいらは優秀じゃないし、プログラミング自体からほとんど引退してるからやめたけど。
543デフォルトの名無しさん
2017/05/26(金) 08:24:06.27ID:KgVkYaTe 突然の自分語り
544デフォルトの名無しさん
2017/05/26(金) 09:52:10.14ID:x3L8qn59 Haskellのプログラミングで金をもらう
Haskellerなる人物に何人も合ったが、
精神科通いとかの頭のオカシイやつばっかだった。
たまたまなのかも知れんが。
Haskellerなる人物に何人も合ったが、
精神科通いとかの頭のオカシイやつばっかだった。
たまたまなのかも知れんが。
545デフォルトの名無しさん
2017/05/26(金) 10:07:05.22ID:lBtW1IaY 両方名うてのキチガイやないかw
546デフォルトの名無しさん
2017/05/26(金) 10:08:41.81ID:lBtW1IaY ちなみにHaskellerがおかしいというよりは
CS業界が全般に発達障害とキチガイに寛容なだけ
CS業界が全般に発達障害とキチガイに寛容なだけ
547デフォルトの名無しさん
2017/05/26(金) 10:25:10.56ID:NDbIiRhl 東大京大
548デフォルトの名無しさん
2017/05/26(金) 10:47:10.88ID:NDbIiRhl549デフォルトの名無しさん
2017/05/26(金) 11:08:43.28ID:7I4ytZjC fumieval知らないとかモグリにもほどがある
自称関数型コミュニティでは超有名人
自称関数型コミュニティでは超有名人
550デフォルトの名無しさん
2017/05/26(金) 11:51:40.04ID:lBtW1IaY551デフォルトの名無しさん
2017/05/26(金) 12:25:49.52ID:npmNm3qp なにかHaskellにはそういう魔力めいた魅力でもあるのでしょうか
552デフォルトの名無しさん
2017/05/26(金) 14:22:36.33ID:ck4pDWmC 関数脳になるとHaskellが癖になるのは確か。
オブジェクト指向のメソッドチェーンも入力->出力の連鎖で、関数型と同じなんだけど、ループや分岐も再帰やパターンマッチで書くから、より入力->出力に専念出来る。
思考がシンプルになる。
オブジェクト指向も思考をシンプルにする事を目指してるけど、クラス作る側とクラス使う側で大きな溝が出来てしまった。
オブジェクト指向のメソッドチェーンも入力->出力の連鎖で、関数型と同じなんだけど、ループや分岐も再帰やパターンマッチで書くから、より入力->出力に専念出来る。
思考がシンプルになる。
オブジェクト指向も思考をシンプルにする事を目指してるけど、クラス作る側とクラス使う側で大きな溝が出来てしまった。
553デフォルトの名無しさん
2017/05/26(金) 16:33:50.74ID:kKmQOK+/ 良くも悪くも変人しかHaskellなんて覚えようと思わないからじゃないかな
明らかに文法が異質だもの
多分みんな人生で何度か「変わってるね」って言われたことあるはず
明らかに文法が異質だもの
多分みんな人生で何度か「変わってるね」って言われたことあるはず
554デフォルトの名無しさん
2017/05/26(金) 17:33:52.44ID:ZKqulABJ 変わってると言えば否定しないけど、どの言語にもおいらみたいなのは一部居るんじゃないかな。
強いて言えばPythonやRubyにさえも挫折したおいらがHaskellで色々書けるようになって、書けるようになってからはPythonやRubyでも書けるようになって、Cでも書けるようにもなった。
例えばRubyのeach_slice相当の関数はHaskellに存在しない。
(Hoogleで調べても無かった)
でも、動きを理解さえすればすぐに同じ動きの関数が書けた。
PythonやRubyは基本が手続き型言語だから、ライブラリを知らないとか、ライブラリに存在しない時に急に難しくなる。
おいらみたいに、LLでさえ手続き型言語で挫折した人がHaskellで出来るようになって、はしゃいでるとかは有るかもね。
強いて言えばPythonやRubyにさえも挫折したおいらがHaskellで色々書けるようになって、書けるようになってからはPythonやRubyでも書けるようになって、Cでも書けるようにもなった。
例えばRubyのeach_slice相当の関数はHaskellに存在しない。
(Hoogleで調べても無かった)
でも、動きを理解さえすればすぐに同じ動きの関数が書けた。
PythonやRubyは基本が手続き型言語だから、ライブラリを知らないとか、ライブラリに存在しない時に急に難しくなる。
おいらみたいに、LLでさえ手続き型言語で挫折した人がHaskellで出来るようになって、はしゃいでるとかは有るかもね。
555デフォルトの名無しさん
2017/05/26(金) 17:41:46.50ID:57q7qnDF 例の包丁Haskellerもそうだが、使っている奴は厨二病患者が多い
本当に厨二心をくすぐる言語なんだよ…
OCamlメインの俺としては変なのがこっちに吸われていて助かる
本当に厨二心をくすぐる言語なんだよ…
OCamlメインの俺としては変なのがこっちに吸われていて助かる
556デフォルトの名無しさん
2017/05/26(金) 18:45:55.29ID:ZQcANW7U 変数も引数なしの値を返す関数。
a = 1
モナドもセクションにすればただの関数。
import System.Environment
slice n xs | length xs < n || n <= 0 = []
slice n xs = ys:slice n zs
where
(ys,zs) = splitAt n xs
main = (>>=) getArgs (print.slice 2)
そういう意味で、mainすらも引数なしでプログラムの結果を返す関数。
全てが関数と型と値だけで考えられる。
厨二で上等。
一貫した考えが素晴らしいね。
煩わしさがない。
a = 1
モナドもセクションにすればただの関数。
import System.Environment
slice n xs | length xs < n || n <= 0 = []
slice n xs = ys:slice n zs
where
(ys,zs) = splitAt n xs
main = (>>=) getArgs (print.slice 2)
そういう意味で、mainすらも引数なしでプログラムの結果を返す関数。
全てが関数と型と値だけで考えられる。
厨二で上等。
一貫した考えが素晴らしいね。
煩わしさがない。
557デフォルトの名無しさん
2017/05/26(金) 18:49:06.98ID:sZfcErOL なぜ自分は変じゃないと思えるのか……
558デフォルトの名無しさん
2017/05/26(金) 18:49:10.19ID:ulIxfp/C OCamlはラクダだもんな。厨二病もクソもないw
OcamlとかClojureはコードが丸い印象。Haskellは何か尖ってるよね。
OcamlとかClojureはコードが丸い印象。Haskellは何か尖ってるよね。
559デフォルトの名無しさん
2017/05/26(金) 18:50:59.74ID:40xXL869 コメントが (* *) だからさ
560デフォルトの名無しさん
2017/05/26(金) 19:01:21.32ID:ZQcANW7U561デフォルトの名無しさん
2017/05/26(金) 19:40:17.16ID:xBragGUI >>556
セクションは部分適用した二項演算子のことだぞ
セクションは部分適用した二項演算子のことだぞ
562デフォルトの名無しさん
2017/05/26(金) 20:51:35.80ID:ovKX6RUR あれ、どっちもセクションじゃ無かったっけ?と久しぶりに調べたら。。。
前置き形式?で良いのかな?
これは済まんかった。
前置き形式?で良いのかな?
これは済まんかった。
563デフォルトの名無しさん
2017/05/26(金) 21:07:05.78ID:lBtW1IaY564デフォルトの名無しさん
2017/05/26(金) 21:28:16.56ID:TC/C61F7 変な文法と言えばPrologとかJ言語とか
565デフォルトの名無しさん
2017/05/26(金) 21:36:15.75ID:ovKX6RUR >>558
OCamlもHaskellも同じML系なのにどうしてそう感じたんだろう?
おいらみたいな使ってるやつの印象ってだけだったり?
おいらみたいなのは少数派だよ。
声が大きいから、たくさん居るように感じるだけ。
OCamlもHaskellも同じML系なのにどうしてそう感じたんだろう?
おいらみたいな使ってるやつの印象ってだけだったり?
おいらみたいなのは少数派だよ。
声が大きいから、たくさん居るように感じるだけ。
566デフォルトの名無しさん
2017/05/26(金) 21:41:20.55ID:0YCuYapQ すみません、質問です
f :: a -> b と g :: a -> c があったときに
\x -> (f x, g x) に相当する関数はライブラリに用意されてますか?
f :: a -> b と g :: a -> c があったときに
\x -> (f x, g x) に相当する関数はライブラリに用意されてますか?
567デフォルトの名無しさん
2017/05/26(金) 22:01:30.73ID:ovKX6RUR >>564
Jは聞いた事はあっても触った事すらないので何とも言えないが、Prologは昔の関数型言語の本では次世代言語として紹介されてたな。
実際触って見て可能性自体は感じるんだが、引数が大文字始まりじゃないとダメとか、計算式が=じゃなくてisとかが、とにかく愛せなかった。。。
Prolog得意の家系図関数も、Prologなら自動で関係を見つけるのをHaskellだと家系図をモデルとした仕様書いて、関係性のルール見抜いて仕様にして、そのまま家系図をデータ型に、関係性のルールを関数にする。
関数はルールの条件を箇条書きすればそのままパターンマッチの関数になる。
この辺が手続き型言語に対するアドバンテージであり、Prologに対して見劣りする所。
でも関係性のルールを見抜く作業と、関数作る作業が私にとっては楽しいのでそれで良い。
Jは聞いた事はあっても触った事すらないので何とも言えないが、Prologは昔の関数型言語の本では次世代言語として紹介されてたな。
実際触って見て可能性自体は感じるんだが、引数が大文字始まりじゃないとダメとか、計算式が=じゃなくてisとかが、とにかく愛せなかった。。。
Prolog得意の家系図関数も、Prologなら自動で関係を見つけるのをHaskellだと家系図をモデルとした仕様書いて、関係性のルール見抜いて仕様にして、そのまま家系図をデータ型に、関係性のルールを関数にする。
関数はルールの条件を箇条書きすればそのままパターンマッチの関数になる。
この辺が手続き型言語に対するアドバンテージであり、Prologに対して見劣りする所。
でも関係性のルールを見抜く作業と、関数作る作業が私にとっては楽しいのでそれで良い。
568デフォルトの名無しさん
2017/05/26(金) 22:03:34.66ID:EgTlEiWL >>566
Control.Arrow の (&&&) だ。
Control.Arrow の (&&&) だ。
569デフォルトの名無しさん
2017/05/26(金) 22:07:24.39ID:ovKX6RUR570デフォルトの名無しさん
2017/05/26(金) 22:16:23.90ID:0YCuYapQ571デフォルトの名無しさん
2017/05/26(金) 22:34:36.00ID:ovKX6RUR572デフォルトの名無しさん
2017/05/26(金) 23:18:50.05ID:npmNm3qp 型シグネチャから利用法読み解くのはIQモンスターでないと無理
設計者の思想を語ってもらわないと
設計者の思想を語ってもらわないと
573デフォルトの名無しさん
2017/05/26(金) 23:54:53.85ID:nlWdhydN574デフォルトの名無しさん
2017/05/27(土) 00:13:32.94ID:ChWjXNtT データフローを記述するようなコードならArrow使えばいい
575デフォルトの名無しさん
2017/05/27(土) 00:28:51.27ID:Cj0QDtYS そうね。
逆にxと関数のリスト二つ受け取って、(f x, g x)のリストを得るとかだと引数の順番好きに選べる普通の関数のが良いと思う。
dfunc x f g = (f x, g f)
なりそう言うラムダ式をmapのリスト二つ版(仮にmap2)を作って渡せば良い。
結局>>566が何をしたかったかによる。
逆にxと関数のリスト二つ受け取って、(f x, g x)のリストを得るとかだと引数の順番好きに選べる普通の関数のが良いと思う。
dfunc x f g = (f x, g f)
なりそう言うラムダ式をmapのリスト二つ版(仮にmap2)を作って渡せば良い。
結局>>566が何をしたかったかによる。
576デフォルトの名無しさん
2017/05/27(土) 01:16:44.64ID:BlrnYoHB Control.ApplicativeのliftA2を使って
liftA2 (,) f g
でもいけるよ。
liftA2 (,) f g
でもいけるよ。
577デフォルトの名無しさん
2017/05/27(土) 07:13:42.02ID:BlrnYoHB 昨日の事件について、意見を書いた
http://anond.hatelabo.jp/20140515010237
http://anond.hatelabo.jp/20140515010237
578デフォルトの名無しさん
2017/05/27(土) 08:54:38.45ID:pQ5DUsdI >>539
頭悪い会話すぎて笑った
頭悪い会話すぎて笑った
579デフォルトの名無しさん
2017/05/27(土) 08:59:16.85ID:ChWjXNtT580デフォルトの名無しさん
2017/05/27(土) 10:15:02.70ID:y8N3m0Nz581デフォルトの名無しさん
2017/05/27(土) 10:32:14.53ID:C4ObyqB4 おまいらが楽する分Haskellコンパイラの
作成が激ムズになる件。
作成が激ムズになる件。
582デフォルトの名無しさん
2017/05/27(土) 10:59:01.67ID:y8N3m0Nz583デフォルトの名無しさん
2017/05/27(土) 12:15:10.10ID:yeXCnzln584デフォルトの名無しさん
2017/05/27(土) 12:23:21.54ID:Vkpp8Cst585デフォルトの名無しさん
2017/05/27(土) 13:39:14.00ID:zKKPdOe3 ****sucking の逆教えてや
586デフォルトの名無しさん
2017/05/27(土) 16:44:16.35ID:ectnCudZ >>585
****vomit
****vomit
587デフォルトの名無しさん
2017/05/28(日) 01:36:41.46ID:i0C/srSl ちょっ違うなVomit****だ
588デフォルトの名無しさん
2017/05/28(日) 09:27:04.54ID:s8SCebgh -rw------- 1 root root 13796 5月 25 23:39 /usr/share/man/man1/cabal.1.gz
ArchLinuxでcabalのmanが読めないのはなんかのいぢめですか?
ArchLinuxでcabalのmanが読めないのはなんかのいぢめですか?
589デフォルトの名無しさん
2017/05/28(日) 13:11:13.15ID:wvAEkP6f リストのn番目の要素をaからbに変えたリストを返す関数とかないですかね?
splitAtで分けてから加工してまた繋げればいいのかな
splitAtで分けてから加工してまた繋げればいいのかな
590デフォルトの名無しさん
2017/05/28(日) 13:22:58.81ID:Ga0OokE+591デフォルトの名無しさん
2017/05/28(日) 20:35:00.08ID:Rx3nBVE8 一目、効率悪そう
592デフォルトの名無しさん
2017/05/28(日) 22:10:57.08ID:3aZpEfHH 元のリストを破壊することなく新しいリストを作るからね
不特定多数から参照されるデータは破壊できないから効率が悪い
所有権がないと参照できないような仕組みがあれば良いのか
不特定多数から参照されるデータは破壊できないから効率が悪い
所有権がないと参照できないような仕組みがあれば良いのか
593デフォルトの名無しさん
2017/05/28(日) 22:31:00.36ID:A2iCvXLz >>589
nとaと(x:xs)受け取ってnが0になったらxの代わりにaをcons(:)すればいい。
setAt _ _ [] = []
setAt 0 a (_:xs) = a:xs
setAt n a (x;cs) = x:setAt (n - 1) a xs
nとaと(x:xs)受け取ってnが0になったらxの代わりにaをcons(:)すればいい。
setAt _ _ [] = []
setAt 0 a (_:xs) = a:xs
setAt n a (x;cs) = x:setAt (n - 1) a xs
594デフォルトの名無しさん
2017/05/28(日) 23:05:39.10ID:Ga0OokE+ >>593
それ、質問者の言う splitAt で分けてからっていう方法と同じ
それ、質問者の言う splitAt で分けてからっていう方法と同じ
595デフォルトの名無しさん
2017/05/28(日) 23:14:43.47ID:wvAEkP6f596デフォルトの名無しさん
2017/05/28(日) 23:23:12.14ID:Rx3nBVE8 リストのコピーって、(既にある)リストの各要素の格納先と同じアドレスを指すポインタを新規アロケートしてく感じですか?
それとも一々要素までをもコピーするんですか?
それとも一々要素までをもコピーするんですか?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★4 [BFU★]
- 【いちご高騰】ヤマザキのクリスマスケーキ、いちご無し販売 [おっさん友の会★]
- 【日中対立】 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ [♪♪♪★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★10 [樽悶★]
- 「ドラゴンボール」初の全世界キャラクター人気投票が開幕!212キャラからナンバーワンが決まる!! [ひかり★]
- 【音楽】『日本レコード大賞』各賞発表! 大賞候補にILLIT、M!LK、ふるっぱー、幾田りら、アイナ、ミセスら… 作詩賞は指原莉乃 [冬月記者★]
- 中国、レアアース輸出制限wwwwwwwwwwwwwwwwwwwwwwww🎌 [329329848]
- おまえらって冷笑系おおすぎじゃね
- 日本をドーム状に覆って気温を一定にしたほうが過ごしやすいんじゃないの?
- 職場の人の雑談あまりにもどうでもよくて混ざらないんだけどさ
- 来月のクリスマス何か予定ある?
- 【すべてが】𝗮𝗺͜𝗮͉𝘇𝗼𝗻ブラックフライデーSALE総合【いいだろ!】 [194819832]
