12/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:デフォルトの名無しさん
12/05/15 14:47:36.52
size使えバカ
983:デフォルトの名無しさん
12/05/15 14:50:16.21
>>978
BASICも文字単位のアクセスや長さの取得に関数を必須とするが…
文字列を文字の集合と考える言語か否か、の差じゃね?
Rubyはそう考えず、文字列とはテキストであると考えて来たから
テキストに対するeachは行単位だったのだろう
984:デフォルトの名無しさん
12/05/15 14:53:04.71
ダックタイピングができると、なんでString#eachがcharAt()的な動作をしないといけないのかがわからん
985:デフォルトの名無しさん
12/05/15 15:18:39.49
アルゴのコードが見える人がなんでHaskell覚えんにゃならんの?
986:979
12/05/15 15:33:57.31
>>981
そのC言語版 forと関係ないのではないかな。
987:デフォルトの名無しさん
12/05/15 15:38:38.95
>>976
言語仕様や使用用途や設計目的(ゴール)は、HaskellとRubyで比較で出来るほど似てるんですか?
988:デフォルトの名無しさん
12/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:デフォルトの名無しさん
12/05/15 15:48:19.28
>>985
逆、見えない人がHaskell覚えれば見えるようになる
990:デフォルトの名無しさん
12/05/15 15:53:35.08
>>988
そもそもString#eachはString#each_charとは別物だし、「僕が考える自然」なんかどうでもいいし
991:デフォルトの名無しさん
12/05/15 15:56:30.67
Haskellは言語仕様も機能も先進的で興味あるんすが、いかんせん日常的に使うところがないので覚えても使い道がくすぐ忘れてしまいます。
Ruby,Java,JSなど普通に使える人にとって、Haskellが有用な使い道は現在ではどういうのがあるのでしょうか?(あるならちょっと触ってみようと思います)
992:デフォルトの名無しさん
12/05/15 15:59:31.48
文法はどうでもいい。
Haskellでさえ、元はC/C++のソースなんだろ。
C/C++が出来ればゼロからHaskellが作れる。
速度を気にしなければ逆も成り立つが。
993:デフォルトの名無しさん
12/05/15 16:00:10.14
>>987
どっちも汎用言語なので、まあ、同じゴールは目指してるといえる
今回の件で、少なくとも、Rubyは学習用途じゃ向かないのは分かった
994:デフォルトの名無しさん
12/05/15 16:02:03.63
>>991
その言語を愛して、すべての事に使ってみる以外に、ないのではないかな。
どの言語でも同じでしょう。
995:デフォルトの名無しさん
12/05/15 16:04:29.23
キラーアプリがないから使うタイミングなんて無い
普段使いなら単純に好き嫌いの問題であり
最近のLLは関数型的にも書けるから、殊更に純粋な関数型を好むのはちょっと変わった人間が多い
あるいは変わった人間になりたい中二病が好む
996:デフォルトの名無しさん
12/05/15 16:05:38.58
>>988
Rubyじゃなくてそも元になったPerlに言えよ…
Perlの文字列は配列ではないぞ
997:デフォルトの名無しさん
12/05/15 16:05:52.99
楽して生産性が高かったら良い。
C/C++やC#やPHPやPerlあたりは装備が色々とあって、
どれだけ文法に優れていようとも生産性で抜く事は難しいだろ。
998:デフォルトの名無しさん
12/05/15 16:06:16.01
>>993
つまり文字列を文字の集合として扱わないBASICは、教育用途に向かないと?
999:デフォルトの名無しさん
12/05/15 16:09:09.29
次スレ建てろよ
1000:デフォルトの名無しさん
12/05/15 16:17:45.77
>>993
汎用言語なら汎用性高いはずですが、Haskellは何に向いてるんですか?
1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。