1 名前:デフォルトの名無しさん mailto:sage [2012/03/16(金) 22:33:46.84 ] 質問する前にGoogleで検索しましょう。www.google.co.jp プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。 ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。 Javascript は Web 制作板、CGI は Web プログラミング板へ。 業界談義、愚痴はプログラマ板へどうぞ。 ゲーム関係の話題はゲーム製作板へどうぞ。 ネタ、板とは関係の無い話題はご遠慮ください。 前スレ スレ立てるまでもない質問はここで 117匹目 toro.2ch.net/test/read.cgi/tech/1328439334/
978 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 13:46:31.08 ] >>977 仕様通りと言う意味ではおかしく無いんだろうが、pythonでもCでもhaskellでもjavaやC#でも、文字列に対するfor文の動作は一文字ずつアクセスする事だ そもそも文字列にfor文が使用出来ない仕様って時点でおかしい
979 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 14:03:21.93 ] >>978 20年くらいCは使っていないので質問させていただきますが、最近のCでは文字列に 対して、特別な動作をするforが存在するのですか?
980 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 14:06:47.26 ] そもそもC言語に文字列型なんてないからな。charの配列はあるが。
981 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 14:28:26.83 ] >>979 無いよ ただ文字列(CとHaskellでは文字の配列だったりリストだったりするだけ)を各要素ごとにアクセスする=一文字ずつアクセスするって考え方はRubyを除いてどの言語も同じってだけ Ruby1.8だと>>976 のコードに"Hello\nWorld!!"を与えると2が返る Ruby1.9だとエラーになる 他の言語だと、ちゃんと13が返る C言語版 int my_strlen(char str[]) { int i = 0; for( i = 0; str[i] != '\0'; i++ ) ; return i; } python版 def mylength (str): sum = 0 for i in str: sum += 1 return sum haskell版 mylength [] = 0 mylength (x:xs) = 1 + mylength xs
982 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 14:47:36.52 ] size使えバカ
983 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 14:50:16.21 ] >>978 BASICも文字単位のアクセスや長さの取得に関数を必須とするが… 文字列を文字の集合と考える言語か否か、の差じゃね? Rubyはそう考えず、文字列とはテキストであると考えて来たから テキストに対するeachは行単位だったのだろう
984 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 14:53:04.71 ] ダックタイピングができると、なんでString#eachがcharAt()的な動作をしないといけないのかがわからん
985 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 15:18:39.49 ] アルゴのコードが見える人がなんでHaskell覚えんにゃならんの?
986 名前:979 mailto:sage [2012/05/15(火) 15:33:57.31 ] >>981 そのC言語版 forと関係ないのではないかな。
987 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 15:38:38.95 ] >>976 言語仕様や使用用途や設計目的(ゴール)は、HaskellとRubyで比較で出来るほど似てるんですか?
988 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 15:47:47.20 ] >>983-984 個人的にはeach_lineがあるのだから、eachがforの構文糖衣と言う事を考えると、やはりeach_charの別名としてeachは定義する方が自然だと思う なにより問題はforがeachの構文糖衣であるが故に、文字列のeachが1.9で廃止になったせいでforが文字列で使えなくなった事 文字列のeach廃止にするなら、その辺考えとけよ。と Ruby(まともに動かなかった)のコードをPythonでほとんどそのまんま書いたら、普通に動いてるし・・・ (というか、文字列を文字の集合と見る言語の方が上で具体的に言語名上げた通り、多数派だ) Rubyで配列も文字列も統一的に扱える関数って、Pythonよりも作りにくいんじゃなかろうか
989 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 15:48:19.28 ] >>985 逆、見えない人がHaskell覚えれば見えるようになる
990 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 15:53:35.08 ] >>988 そもそもString#eachはString#each_charとは別物だし、「僕が考える自然」なんかどうでもいいし
991 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 15:56:30.67 ] Haskellは言語仕様も機能も先進的で興味あるんすが、いかんせん日常的に使うところがないので覚えても使い道がくすぐ忘れてしまいます。 Ruby,Java,JSなど普通に使える人にとって、Haskellが有用な使い道は現在ではどういうのがあるのでしょうか?(あるならちょっと触ってみようと思います)
992 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 15:59:31.48 ] 文法はどうでもいい。 Haskellでさえ、元はC/C++のソースなんだろ。 C/C++が出来ればゼロからHaskellが作れる。 速度を気にしなければ逆も成り立つが。
993 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 16:00:10.14 ] >>987 どっちも汎用言語なので、まあ、同じゴールは目指してるといえる 今回の件で、少なくとも、Rubyは学習用途じゃ向かないのは分かった
994 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 16:02:03.63 ] >>991 その言語を愛して、すべての事に使ってみる以外に、ないのではないかな。 どの言語でも同じでしょう。
995 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 16:04:29.23 ] キラーアプリがないから使うタイミングなんて無い 普段使いなら単純に好き嫌いの問題であり 最近のLLは関数型的にも書けるから、殊更に純粋な関数型を好むのはちょっと変わった人間が多い あるいは変わった人間になりたい中二病が好む
996 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 16:05:38.58 ] >>988 Rubyじゃなくてそも元になったPerlに言えよ… Perlの文字列は配列ではないぞ
997 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 16:05:52.99 ] 楽して生産性が高かったら良い。 C/C++やC#やPHPやPerlあたりは装備が色々とあって、 どれだけ文法に優れていようとも生産性で抜く事は難しいだろ。
998 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 16:06:16.01 ] >>993 つまり文字列を文字の集合として扱わないBASICは、教育用途に向かないと?
999 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 16:09:09.29 ] 次スレ建てろよ
1000 名前:デフォルトの名無しさん mailto:sage [2012/05/15(火) 16:17:45.77 ] >>993 汎用言語なら汎用性高いはずですが、Haskellは何に向いてるんですか?
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。