いざ、語ろうぞ。
スレタイ超過のため、一部省略。
Go, Erlang, Kotlin, etcもウェルカム。
Haskellは協議により次世代失格になりました
前スレ
次世代言語議論スレ[Go Rust Haskell Scala]第3世代
http://echo.2ch.net/test/read.cgi/tech/1488608741/
探検
次世代言語議論スレ[Go Rust Kotlin Scala]第4世代 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/04/20(木) 04:43:27.12ID:mNwXvrXv
310デフォルトの名無しさん
2017/05/07(日) 18:14:46.33ID:zdh+Rbcj おっと2問目もあったか
Pythonで言えば
def count(path, word):
____with open(path) as f:
________return sum(l.count(word) for l in f)
でも追加しておけばOKだな。うん。searchの内容一切使ってないけど変更は3行やね
つーかsearchももっと短くできたな
Pythonで言えば
def count(path, word):
____with open(path) as f:
________return sum(l.count(word) for l in f)
でも追加しておけばOKだな。うん。searchの内容一切使ってないけど変更は3行やね
つーかsearchももっと短くできたな
311デフォルトの名無しさん
2017/05/07(日) 18:18:38.81ID:zdh+Rbcj312デフォルトの名無しさん
2017/05/07(日) 18:23:23.71ID:/lTp1FVO >>304 Squeak/Pharo Smalltalk
| search |
search := [:fname :keywd |
FileStream oldFileNamed: fname do: [:file |
| count |
count := 0.
[file match: keywd] whileTrue: [
count := count + 1.
file atEnd ifFalse: [file skip: 1 - keywd size]].
count
]
].
search value: 'test.txt' value: 'something'
http://ws.stfx.eu/RU59LGEMKG9G
| search |
search := [:fname :keywd |
FileStream oldFileNamed: fname do: [:file |
| count |
count := 0.
[file match: keywd] whileTrue: [
count := count + 1.
file atEnd ifFalse: [file skip: 1 - keywd size]].
count
]
].
search value: 'test.txt' value: 'something'
http://ws.stfx.eu/RU59LGEMKG9G
313デフォルトの名無しさん
2017/05/07(日) 18:23:58.94ID:m17h7+4k そこをどうにか機能追加で
search test.txt hoge
Ture 4
みたいな感じに表示項目増えるように第一形態のコードを育てる様にして欲しいんだが。。。
関数名以外は中身が丸っと変わっても良いけどさ。
search test.txt hoge
Ture 4
みたいな感じに表示項目増えるように第一形態のコードを育てる様にして欲しいんだが。。。
関数名以外は中身が丸っと変わっても良いけどさ。
314デフォルトの名無しさん
2017/05/07(日) 18:27:46.84ID:zdh+Rbcj え、関数名変えたらいかんの?
それはおかしいやろ
一回作った関数の振る舞いを変更するのはおかしい。別の関数を作るべき
それはおかしいやろ
一回作った関数の振る舞いを変更するのはおかしい。別の関数を作るべき
315デフォルトの名無しさん
2017/05/07(日) 18:28:27.76ID:m17h7+4k Haskellではタプルをそのまま表示して
search test.txt hoge
(True,4)
ってする予定。
search test.txt hoge
(True,4)
ってする予定。
316デフォルトの名無しさん
2017/05/07(日) 18:29:37.82ID:m17h7+4k >>314
そう言う問題も第二弾として考えてる。
そう言う問題も第二弾として考えてる。
317デフォルトの名無しさん
2017/05/07(日) 18:32:35.47ID:zdh+Rbcj うーん。この程度の量で無理に機能追加で育てていくこと自体が設計ミスだと思うけどなあ
318デフォルトの名無しさん
2017/05/07(日) 18:42:25.99ID:m17h7+4k そこは承知の上で、まだ次世代言語入門したばかりでも参入しやすい様にってのと、過去のコードに影響あるよね?って事で第二弾に持って行きたい。
319デフォルトの名無しさん
2017/05/07(日) 18:47:14.19ID:zdh+Rbcj はいPythonまとめ
searchはもっと短い実装思いついたから短くした。
from sys import argv
def search(path, word): # 1st
____with open(path) as f: # 1st
________return any(word in l for l in f) # 1st
def count(path, word): # 2nd
____with open(path) as f: # 2nd
________return sum(l.count(word) for l in f) # 2nd
if __name__ == '__main__':
# print(search(argv[1], argv[2])) # 1st
print(count(argv[1], argv[2])) # 2nd
変更は2ndって書いてある4行。一切再利用とかしてないけど、このお題に関して分かりやすさ、変更の少なさ、安全さでこれ超えるのは無理でしょ
searchはもっと短い実装思いついたから短くした。
from sys import argv
def search(path, word): # 1st
____with open(path) as f: # 1st
________return any(word in l for l in f) # 1st
def count(path, word): # 2nd
____with open(path) as f: # 2nd
________return sum(l.count(word) for l in f) # 2nd
if __name__ == '__main__':
# print(search(argv[1], argv[2])) # 1st
print(count(argv[1], argv[2])) # 2nd
変更は2ndって書いてある4行。一切再利用とかしてないけど、このお題に関して分かりやすさ、変更の少なさ、安全さでこれ超えるのは無理でしょ
320デフォルトの名無しさん
2017/05/07(日) 18:51:13.41ID:zdh+Rbcj321デフォルトの名無しさん
2017/05/07(日) 19:24:12.22ID:m17h7+4k (しぶしぶ)了解。
322デフォルトの名無しさん
2017/05/07(日) 19:36:18.70ID:4ZC1qsBr 再利用しないほうが少ない変更でいけるものに再利用を強制して、その分量で言語の優劣を測るというのは理不尽な話だ
323デフォルトの名無しさん
2017/05/07(日) 20:18:32.73ID:zdh+Rbcj Pythonのコードで再利用せずに済んでるのはバッテリー付き言語であるのが大きいな。もし次世代言語でmatchとかcountすらないようなのがあるとしたらその言語にとってはそこそこいい課題になるかもな
324デフォルトの名無しさん
2017/05/07(日) 20:59:47.13ID:/lTp1FVO >>304
ファイルの行ごとの内容はメモリに収まる程度なのか、とか
例えば 'xxxoooxxx' という文字列内に 'oo' は1個なのか2個なのか、とかは
回答側の都合がいいように自由に決めていい?
ファイルの行ごとの内容はメモリに収まる程度なのか、とか
例えば 'xxxoooxxx' という文字列内に 'oo' は1個なのか2個なのか、とかは
回答側の都合がいいように自由に決めていい?
325デフォルトの名無しさん
2017/05/07(日) 21:31:50.41ID:6O1o1Sih 仕様変更というから仕様バグをデバッグするのかと思ったら
バグのない完成品に機能追加して多機能化すれば優秀さを示せるって発想か
嫌な予感がする
バグのない完成品に機能追加して多機能化すれば優秀さを示せるって発想か
嫌な予感がする
327デフォルトの名無しさん
2017/05/07(日) 23:11:40.56ID:4ZC1qsBr >>326
どういう意味?
どういう意味?
328デフォルトの名無しさん
2017/05/08(月) 01:06:43.83ID:F16X/4LX Ocamlって型クラスないのか
329あ
2017/05/08(月) 06:18:15.11ID:FkyLZnez >>327
再利用せずに入れ替えたいから、その部品が使われるときのインターフェイスを定義して、関係ないものをカプセル化するんじゃん?
再利用して無理に機能追加してると、割りと早めにインターフェイスは形骸化するよ。
引き戸である、とか、このドアは回転扉で開けると反対が閉まる、とか、エアロックみたく、どちらかしか開かない制限をかけたいとか、そういう要件で安易に
扉だったものを魔改造するハメになる。
そうすると、インターフェイスってものや、カプセル化ってものが、完全に無意味になる。
魔改造されてて、本来の意味を失ったインターフェイスの「ドアを押す」メソッドとか怖すぎるじゃん。
再利用せずに入れ替えたいから、その部品が使われるときのインターフェイスを定義して、関係ないものをカプセル化するんじゃん?
再利用して無理に機能追加してると、割りと早めにインターフェイスは形骸化するよ。
引き戸である、とか、このドアは回転扉で開けると反対が閉まる、とか、エアロックみたく、どちらかしか開かない制限をかけたいとか、そういう要件で安易に
扉だったものを魔改造するハメになる。
そうすると、インターフェイスってものや、カプセル化ってものが、完全に無意味になる。
魔改造されてて、本来の意味を失ったインターフェイスの「ドアを押す」メソッドとか怖すぎるじゃん。
330デフォルトの名無しさん
2017/05/08(月) 06:39:47.64ID:pk8djPQr331あ
2017/05/08(月) 06:45:50.09ID:FkyLZnez >>330
インターフェイス、型、あとはクラス構造自体の意義、もうちょっと広くとっても良いかなって思って。
Cでもアセンブラでも可換な作り方って出来るから、あまりに具体例にするのも話が矮小化しそうだなぁって思ったんよ。
申し訳ない。
「も、含めて」とかちょっと言い方考えるわ。
インターフェイス、型、あとはクラス構造自体の意義、もうちょっと広くとっても良いかなって思って。
Cでもアセンブラでも可換な作り方って出来るから、あまりに具体例にするのも話が矮小化しそうだなぁって思ったんよ。
申し訳ない。
「も、含めて」とかちょっと言い方考えるわ。
332デフォルトの名無しさん
2017/05/08(月) 06:53:05.16ID:pk8djPQr333デフォルトの名無しさん
2017/05/08(月) 06:57:25.03ID:Ya4nTupG アルゴリズムなんてどれで書いても同じなんだから
もっとUI作りやすい言語くれよ。
もっとUI作りやすい言語くれよ。
334あ
2017/05/08(月) 07:22:21.17ID:FkyLZnez335デフォルトの名無しさん
2017/05/08(月) 18:51:10.68ID:nU60kBJx >>324
行は基本メモリに収まる程度だよ。
小説とか、常識的なテキストで問題無ければおk。
行に一個二個を回答側の都合ってのは普通駄目だろう。。。
でも、あんまりにも回答者いないんでもう良いよ。。。
行は基本メモリに収まる程度だよ。
小説とか、常識的なテキストで問題無ければおk。
行に一個二個を回答側の都合ってのは普通駄目だろう。。。
でも、あんまりにも回答者いないんでもう良いよ。。。
336デフォルトの名無しさん
2017/05/08(月) 18:54:25.80ID:nU60kBJx >>329
あー。。。
あんま考えずに提案してたわ。。。
うーん。。。
インターフェースは変えずにって条件付ける?
実際に引数増やさないと駄目な時は補助関数作って、実際の処理はそっちに丸投げみたいな形で。
一応第二弾ではそう言うのも考慮して、既存の関数に手を加えないで機能拡張ってテーマで行く予定だけど。
あー。。。
あんま考えずに提案してたわ。。。
うーん。。。
インターフェースは変えずにって条件付ける?
実際に引数増やさないと駄目な時は補助関数作って、実際の処理はそっちに丸投げみたいな形で。
一応第二弾ではそう言うのも考慮して、既存の関数に手を加えないで機能拡張ってテーマで行く予定だけど。
337デフォルトの名無しさん
2017/05/08(月) 21:10:34.76ID:nbca9qQS >>335
> 行に一個二個を回答側の都合ってのは普通駄目だろう。。。
であれば、正規表現に丸投げするのでもなければ処理内容にも影響するので
例えば 'xxxoooxxx' 内に 'oo' は1個と数えるか2個と数えるかとかは出題側で事前にきちんと決めてください
> 行に一個二個を回答側の都合ってのは普通駄目だろう。。。
であれば、正規表現に丸投げするのでもなければ処理内容にも影響するので
例えば 'xxxoooxxx' 内に 'oo' は1個と数えるか2個と数えるかとかは出題側で事前にきちんと決めてください
338デフォルトの名無しさん
2017/05/09(火) 00:31:37.08ID:fIUN0UPL ああ!
勘違いしてた。
そう言うことね。
ラッキー7(777)検索してて7777ってなってたら1個と数えるか2個と数えるかって事か。
私の方法だと2個に数えてるので2個にしましょう。
勘違いしてた。
そう言うことね。
ラッキー7(777)検索してて7777ってなってたら1個と数えるか2個と数えるかって事か。
私の方法だと2個に数えてるので2個にしましょう。
339あ
2017/05/09(火) 02:14:34.77ID:w3DidVUp メモリをジャブジャブ使えて1個で考えて良いなら殆どの言語で一行なんだけどなぁ。
jsで言うと(content+'').split(delimiter).length-1だから。
jsで言うと(content+'').split(delimiter).length-1だから。
340デフォルトの名無しさん
2017/05/09(火) 07:18:26.65ID:83wQykSi >>335
「小説とか」ということは、日本語の可能性もあるの?その場合に想定してるエンコードは?
とにかくideone.comとかで参加者が気軽に動作を確認でき、かつ仕様を満たした回答例を先に出しといてください
実戦向きとか言うわりに細かな仕様がまったくわからんし、動くコードでもなければエスパーするにも限界があるよ
「小説とか」ということは、日本語の可能性もあるの?その場合に想定してるエンコードは?
とにかくideone.comとかで参加者が気軽に動作を確認でき、かつ仕様を満たした回答例を先に出しといてください
実戦向きとか言うわりに細かな仕様がまったくわからんし、動くコードでもなければエスパーするにも限界があるよ
341デフォルトの名無しさん
2017/05/09(火) 08:36:02.65ID:YN7Krfta 言語が次世代になっても要件定義(笑)などが旧世代だと
どうにもならんね
どうにもならんね
342デフォルトの名無しさん
2017/05/09(火) 09:22:59.82ID:7e9h09Aa >>339
+'' ってなんかのおまじない?
+'' ってなんかのおまじない?
344あ
2017/05/09(火) 11:59:38.90ID:b+ihuqXk 言葉足らずだったな。文字列と見せかけて数値にどっかで化けさせた奴対策だったり、そもそも引数来なかったとかそういうやつ。
345デフォルトの名無しさん
2017/05/09(火) 13:13:43.62ID:7e9h09Aa347デフォルトの名無しさん
2017/05/09(火) 16:14:33.37ID:PEK3Ov/R >>339
そうなんだ。。。
じゃあ、両方のを書くのでどっちもおkにします。
>>340
長さは?とか聞かれて小説とかって書いたけど、今回は適当なソース読ませる程度しか想定してないし、参入障壁にしたくないからアスキー文字だけしか想定してない。
本当、思い付きで申し訳ない。
そんな訳で下のコードをコピペして検索にかけると
>search search.hs search
(True,16)
ってなるはず。
んで、777を検索して7777を1個と数える版はsearch2として書いてみた。
最早Pythonよりも修正箇所多そうだけど気にしない。
do形式よりモナド形式が好きなのでdo形式コメントアウトしてるのは気にしないで欲しい。
(ちょうど良かったんで7777を確認用にdoの後ろに追加してる)
そうなんだ。。。
じゃあ、両方のを書くのでどっちもおkにします。
>>340
長さは?とか聞かれて小説とかって書いたけど、今回は適当なソース読ませる程度しか想定してないし、参入障壁にしたくないからアスキー文字だけしか想定してない。
本当、思い付きで申し訳ない。
そんな訳で下のコードをコピペして検索にかけると
>search search.hs search
(True,16)
ってなるはず。
んで、777を検索して7777を1個と数える版はsearch2として書いてみた。
最早Pythonよりも修正箇所多そうだけど気にしない。
do形式よりモナド形式が好きなのでdo形式コメントアウトしてるのは気にしないで欲しい。
(ちょうど良かったんで7777を確認用にdoの後ろに追加してる)
348デフォルトの名無しさん
2017/05/09(火) 16:15:07.28ID:PEK3Ov/R import System.Environment
search w cts = search' (False,0) w cts
where
search' (b,n) _ [] = (b,n)
search' (_,n) w (c:cs) | take (length w) (c:cs) == w = search' (True,n + 1) w cs
search' t w (_,cs) = search' t w cs
search2 w cts = search' (False,0) w cts
where
search' (b,n) _ [] = (b,n)
search' (_,n) w cts | take (length w) cts == w = search' (True,n + 1) w $ drop (length w) cts
search' t w (_:cs) = search' t w cs
-- main = do 7777
-- (file:word:_) <- getArgs
-- content <- readFile file
-- print $ search word content
main = getArgs >>= \(file:word) -> readFile file >>= print.search word
search w cts = search' (False,0) w cts
where
search' (b,n) _ [] = (b,n)
search' (_,n) w (c:cs) | take (length w) (c:cs) == w = search' (True,n + 1) w cs
search' t w (_,cs) = search' t w cs
search2 w cts = search' (False,0) w cts
where
search' (b,n) _ [] = (b,n)
search' (_,n) w cts | take (length w) cts == w = search' (True,n + 1) w $ drop (length w) cts
search' t w (_:cs) = search' t w cs
-- main = do 7777
-- (file:word:_) <- getArgs
-- content <- readFile file
-- print $ search word content
main = getArgs >>= \(file:word) -> readFile file >>= print.search word
349デフォルトの名無しさん
2017/05/09(火) 16:29:20.54ID:7e9h09Aa >>346
contentがundefinedでdelimiterが'e'とかだったら?
contentがundefinedでdelimiterが'e'とかだったら?
351デフォルトの名無しさん
2017/05/11(木) 14:33:48.35ID:xTl8MRgt 第三形態とやらはどうなった?
352デフォルトの名無しさん
2017/05/11(木) 14:41:22.16ID:+i4P6kRh 第一第二形態で次世代言語の回答もないのに出して良いものか。。。
353デフォルトの名無しさん
2017/05/11(木) 14:47:49.71ID:+i4P6kRh まとめとこう。
>>309で一旦まとめて
インターフェース(引数)固定縛り。
(補助関数可)
英数字のみのファイル前提。
行やファイル全体もメモリに収まる程度を想定。
777で検索した際、7777は検索結果1個とカウントしても2個とカウントしてもおk。
>>309で一旦まとめて
インターフェース(引数)固定縛り。
(補助関数可)
英数字のみのファイル前提。
行やファイル全体もメモリに収まる程度を想定。
777で検索した際、7777は検索結果1個とカウントしても2個とカウントしてもおk。
354デフォルトの名無しさん
2017/05/11(木) 17:06:04.00ID:xTl8MRgt そういうのいらないから第三形態と回答例はよ
355デフォルトの名無しさん
2017/05/11(木) 17:14:36.14ID:+i4P6kRh はいはい・・・。
んじゃ、検索で見つけた位置も追加で表示するように拡張。
import System.Environment
search w = search' (False,0,[],(1,0)) w
where
search' (b,n,ps,_) _ [] = (b,n,reverse ps)
search' (b,n,ps,(y,_)) w (c:cs) | c == '\n' = search' (b,n,ps,(y + 1,0)) w cs
search' (_,n,ps,(y,x)) w (c:cs) | take (length w) (c:cs) == w = search' (True,n + 1,(y,x + 1):ps,(y,x + 1)) w cs
search' (b,n,ps,(y,x)) w (_:cs) = search' (b,n,ps,(y, x + 1)) w cs
search2 w = search' (False,0,[],(1,0)) w
where
search' (b,n,ps,_) _ [] = (b,n,reverse ps)
search' (b,n,ps,(y,_)) w (c:cs) | c == '\n' = search' (b,n,ps,(y + 1,0)) w cs
search' (_,n,ps,(y, x)) w cts | take (length w) cts == w = search' (True,n + 1,(y, x + 1):ps,(y, x + 1)) w $ drop (length w) cts
search' (b,n,ps,(y,x)) w (_:cs) = search' (b,n,ps,(y, x + 1)) w cs
-- main = do 7777
-- (file:word:_) <- getArgs
-- content <- readFile file
-- print $ search word content
main = getArgs >>= \(file:word:_) -> readFile file >>= print.search2 word
んじゃ、検索で見つけた位置も追加で表示するように拡張。
import System.Environment
search w = search' (False,0,[],(1,0)) w
where
search' (b,n,ps,_) _ [] = (b,n,reverse ps)
search' (b,n,ps,(y,_)) w (c:cs) | c == '\n' = search' (b,n,ps,(y + 1,0)) w cs
search' (_,n,ps,(y,x)) w (c:cs) | take (length w) (c:cs) == w = search' (True,n + 1,(y,x + 1):ps,(y,x + 1)) w cs
search' (b,n,ps,(y,x)) w (_:cs) = search' (b,n,ps,(y, x + 1)) w cs
search2 w = search' (False,0,[],(1,0)) w
where
search' (b,n,ps,_) _ [] = (b,n,reverse ps)
search' (b,n,ps,(y,_)) w (c:cs) | c == '\n' = search' (b,n,ps,(y + 1,0)) w cs
search' (_,n,ps,(y, x)) w cts | take (length w) cts == w = search' (True,n + 1,(y, x + 1):ps,(y, x + 1)) w $ drop (length w) cts
search' (b,n,ps,(y,x)) w (_:cs) = search' (b,n,ps,(y, x + 1)) w cs
-- main = do 7777
-- (file:word:_) <- getArgs
-- content <- readFile file
-- print $ search word content
main = getArgs >>= \(file:word:_) -> readFile file >>= print.search2 word
356デフォルトの名無しさん
2017/05/11(木) 17:32:30.86ID:+i4P6kRh >>348のコードをコピペしたテスト用テキストだとこう表示されるはず。
>search test.txt search
(True,16,[(3,1),(3,11),(5,1),(6,1),(6,51),(7,1),(7,17),(9,1),(9,12),(11,1),(12,1),(12,45),(13,1),(13,17),(18,12),(20,60)])
>search test.txt search
(True,16,[(3,1),(3,11),(5,1),(6,1),(6,51),(7,1),(7,17),(9,1),(9,12),(11,1),(12,1),(12,45),(13,1),(13,17),(18,12),(20,60)])
357デフォルトの名無しさん
2017/05/11(木) 17:35:54.43ID:/dUENRjT 結局俺たちの次世代言語はハスケルとスモールトークだったということか。
358デフォルトの名無しさん
2017/05/11(木) 17:41:01.83ID:+i4P6kRh んな訳ないと思うんだが。。。
第三形態まで出たんだから、次世代言語勢たのんますよ。
本当。
第三形態まで出たんだから、次世代言語勢たのんますよ。
本当。
359デフォルトの名無しさん
2017/05/11(木) 18:01:32.36ID:+i4P6kRh360デフォルトの名無しさん
2017/05/11(木) 18:04:33.44ID:+i4P6kRh あ、777検索してて7777は一個二個どっちで数えてもおk。
361あ
2017/05/11(木) 18:41:45.50ID:lLJXISKu >>359
ガバガバでは?
type LookupResult struct {
//略
}
func (lr LookupResult) foundAsBool Bool{
return lr.found
}
func Lookup(needle,haystack String) LookupResult{
//検索処理
return LookupResult{found:結果}
}
って第一形態書いとけば、LookupResultが超リッチになってくだけでインターフェイスもへったくれもない石器時代の発想で書けちゃうよ。
そして往々にして業務アプリ屋ならちょっと気がおかしいレベルで、こんな形で結果をラップする事を徹底してる。
大きな変更は無いけど、いい事も無い。
ガバガバでは?
type LookupResult struct {
//略
}
func (lr LookupResult) foundAsBool Bool{
return lr.found
}
func Lookup(needle,haystack String) LookupResult{
//検索処理
return LookupResult{found:結果}
}
って第一形態書いとけば、LookupResultが超リッチになってくだけでインターフェイスもへったくれもない石器時代の発想で書けちゃうよ。
そして往々にして業務アプリ屋ならちょっと気がおかしいレベルで、こんな形で結果をラップする事を徹底してる。
大きな変更は無いけど、いい事も無い。
363デフォルトの名無しさん
2017/05/11(木) 18:46:17.93ID:TwpHLB2C しもた。。。
7777を一個と数える版(search2)でバグあった。
見つけたらdrop (length w)してるんだから、リストに追加する発見位置はそのままだけど、現在位置は検索文字列の長さ分足さなきゃだった。
適当に修正お願いします。(おい)
7777を一個と数える版(search2)でバグあった。
見つけたらdrop (length w)してるんだから、リストに追加する発見位置はそのままだけど、現在位置は検索文字列の長さ分足さなきゃだった。
適当に修正お願いします。(おい)
364デフォルトの名無しさん
2017/05/11(木) 20:01:32.06ID:o2lqEhku 第三形態も1から書いたほうが早いな
そう、バッテリー付き言語ならね
そう、バッテリー付き言語ならね
365デフォルトの名無しさん
2017/05/11(木) 20:43:01.26ID:pualqazL ていうか何のスレ?
次世代言語議論してないよな
次世代言語議論してないよな
366デフォルトの名無しさん
2017/05/11(木) 21:12:13.28ID:w7aTa8S+ 次世代言語での>>359への回答待ち。
367デフォルトの名無しさん
2017/05/11(木) 21:28:25.35ID:w7aTa8S+ って事は実行結果の例も修正せなな。。。
>>348のコードをコピペしたテスト用テキストだとこう表示されるはず。
>search test.txt search
(True,16,[(3,1),(3,16),(5,1),(6,1),(6,56),(7,1),(7,22),(9,1),(9,17),(11,1),(12,1),(12,50),(13,1),(13,22),(18,12),(20,60)])
>>348のコードをコピペしたテスト用テキストだとこう表示されるはず。
>search test.txt search
(True,16,[(3,1),(3,16),(5,1),(6,1),(6,56),(7,1),(7,22),(9,1),(9,17),(11,1),(12,1),(12,50),(13,1),(13,22),(18,12),(20,60)])
368デフォルトの名無しさん
2017/05/11(木) 22:14:35.58ID:pualqazL 久しぶりにコードみたけどHaskellちゃんキモイな〜
10年前から主要言語TOP10は変わってないという事実をお忘れなきように
10年前から主要言語TOP10は変わってないという事実をお忘れなきように
369デフォルトの名無しさん
2017/05/11(木) 23:32:16.09ID:5z6DmCSe 10年間スマホを世界中で売りまくっても何も変わらなかったのは意外だな
370デフォルトの名無しさん
2017/05/12(金) 00:30:03.06ID:3oRK7AIr それは今後も主要言語は変わらないから次世代言語について考えることは無意味ってことかな
372デフォルトの名無しさん
2017/05/12(金) 06:43:44.99ID:4vGyFDSj 実装基準がよくわからない。
import System.Environment(getArgs)
import Data.List(isInfixOf,isPrefixOf,tails,findIndices)
search1 = isInfixOf
search2 word = length . filter (isPrefixOf word) . tails
search3 word content = (ps /= [], length ps, ps)
where ps = concat . zipWith indices [0..] $ lines content
indices l = zip (repeat l) . findIndices (isPrefixOf word) . tails
main = do
(file:word:_) <- getArgs
print =<< search1 word <$> readFile file
print =<< search2 word <$> readFile file
print =<< search3 word <$> readFile file
import System.Environment(getArgs)
import Data.List(isInfixOf,isPrefixOf,tails,findIndices)
search1 = isInfixOf
search2 word = length . filter (isPrefixOf word) . tails
search3 word content = (ps /= [], length ps, ps)
where ps = concat . zipWith indices [0..] $ lines content
indices l = zip (repeat l) . findIndices (isPrefixOf word) . tails
main = do
(file:word:_) <- getArgs
print =<< search1 word <$> readFile file
print =<< search2 word <$> readFile file
print =<< search3 word <$> readFile file
373デフォルトの名無しさん
2017/05/12(金) 08:36:47.18ID:u9nYGLh2 そもそもこのスレからHaskellはスレ違いになったんだが
374あ
2017/05/12(金) 08:40:43.26ID:6RnAOpKz >>364
第二形態書いた時点で第一形態は、第二形態を中で呼ぶ様に書き換えないと悲劇だし、第三形態も同じ。
レビューで辛辣な第一形態を安易に書いたdisりを受けたあと、直交性が失われるために、それより前の形態をAPIとしてobsoluteにしてライブラリ関数とかマクロに降格するレベルだよね。
第二形態書いた時点で第一形態は、第二形態を中で呼ぶ様に書き換えないと悲劇だし、第三形態も同じ。
レビューで辛辣な第一形態を安易に書いたdisりを受けたあと、直交性が失われるために、それより前の形態をAPIとしてobsoluteにしてライブラリ関数とかマクロに降格するレベルだよね。
375デフォルトの名無しさん
2017/05/12(金) 10:34:41.20ID:nQbZenvu >>372
Data.Listの関数はisInfixOfとisPrefixOf、tailsを本で読んだだけで使った事ないな。。。
それ以外は見た事すらない。
ちゃんと使うと、ここまで書けるのね。
そう言う意味じゃ、おいらのは入門書前半の知識だけでも書けるって感じやね。
おいらがHaskell好きなのは美しさもだけど、ひたすらミニマムな知識だけでも何とかなっちゃうのが良い。
数学と同じで便利な関数知ってれば、強力な武器だし周りからは難しそうに見えるけど、基本はとても簡単で、少ない武器でもどうにかこうにか自力でも解ける。
これこそ初心者向け言語だって思ってるんだけどねぇ。。。
Data.Listの関数はisInfixOfとisPrefixOf、tailsを本で読んだだけで使った事ないな。。。
それ以外は見た事すらない。
ちゃんと使うと、ここまで書けるのね。
そう言う意味じゃ、おいらのは入門書前半の知識だけでも書けるって感じやね。
おいらがHaskell好きなのは美しさもだけど、ひたすらミニマムな知識だけでも何とかなっちゃうのが良い。
数学と同じで便利な関数知ってれば、強力な武器だし周りからは難しそうに見えるけど、基本はとても簡単で、少ない武器でもどうにかこうにか自力でも解ける。
これこそ初心者向け言語だって思ってるんだけどねぇ。。。
376デフォルトの名無しさん
2017/05/12(金) 10:35:36.50ID:nQbZenvu >>373
Haskell追い出せるだけの次世代言語の立派な回答求む。
Haskell追い出せるだけの次世代言語の立派な回答求む。
377デフォルトの名無しさん
2017/05/12(金) 13:24:07.84ID:H6Uk5vuw "Pharo Smalltalk"
search1st := [:str :kw | str includesSubstring: kw].
search2nd := [:str :kw | (str splitOn: kw) size - 1 ].
search3rd := [:str :kw |
Array streamContents: [:ss |
(str lines collect: #readStream) doWithIndex: [:strm :idx |
[strm match: kw] whileTrue: [ss nextPut: idx -> (strm position - kw size + 1)].
]
]
].
http://ws.stfx.eu/DQART2BS6GYF
search1st := [:str :kw | str includesSubstring: kw].
search2nd := [:str :kw | (str splitOn: kw) size - 1 ].
search3rd := [:str :kw |
Array streamContents: [:ss |
(str lines collect: #readStream) doWithIndex: [:strm :idx |
[strm match: kw] whileTrue: [ss nextPut: idx -> (strm position - kw size + 1)].
]
]
].
http://ws.stfx.eu/DQART2BS6GYF
378デフォルトの名無しさん
2017/05/12(金) 17:26:32.26ID:k//9Mr+f379デフォルトの名無しさん
2017/05/12(金) 20:20:28.20ID:H6Uk5vuw >>377 の search3rd はもっとシンプルに書けたので差し替え
search3rd := [:str :kw |
(str lines collectWithIndex: [:line :idx |
(line allRangesOfSubstring: kw) collect: [:range | idx -> range first]
]) concatenation
].
http://ws.stfx.eu/A3HB6MT66GI5
search3rd := [:str :kw |
(str lines collectWithIndex: [:line :idx |
(line allRangesOfSubstring: kw) collect: [:range | idx -> range first]
]) concatenation
].
http://ws.stfx.eu/A3HB6MT66GI5
380デフォルトの名無しさん
2017/05/12(金) 22:43:42.90ID:y9SJMwIK 第4世代、4番目、英語で言えば、Forth
381片山博文MZ ◆T6xkBnTXz7B0
2017/05/12(金) 22:45:07.26ID:r6F8dCD7 残念、fourth でした。
382デフォルトの名無しさん
2017/05/13(土) 00:01:55.41ID:hYOIVOdy そんなの良いから。
実際問題キャットドアより簡単だから。
次世代言語以外が回答してるのがおかしいから。
実際問題キャットドアより簡単だから。
次世代言語以外が回答してるのがおかしいから。
383デフォルトの名無しさん
2017/05/13(土) 01:15:28.36ID:VbJPsYiJ 終わった言語が必死にコード載せてアッピールしようとしててウケるw
384デフォルトの名無しさん
2017/05/13(土) 01:52:43.37ID:7Z9U0QOC pascalとかForceとかね。次世代言語だよ?
Fortunは77じゃないよね
Fortunは77じゃないよね
385デフォルトの名無しさん
2017/05/13(土) 04:50:33.84ID:j31cCXIw 数行のコードも書けぬ低脳に担がれ哀れな次世代()言語
386デフォルトの名無しさん
2017/05/13(土) 08:16:21.72ID:2mf4fJqx ぶっちゃけ新しい言語とか覚えるの面倒だから次世代とかいらねーって思ってるんだろ?
387デフォルトの名無しさん
2017/05/13(土) 08:20:03.99ID:zCDOTfft 次世代言語を考えるなら古典に立ち戻ることが重要だな。
スレタイに挙げられた言語は局所最適の枝葉末節だらけで参考にならない。
スレタイに挙げられた言語は局所最適の枝葉末節だらけで参考にならない。
388デフォルトの名無しさん
2017/05/13(土) 08:26:47.84ID:pUHHN6Pq じゃあ原点に立ち返って、Smalltalkのどこがゴミで死んだのか確認しようぜ
389デフォルトの名無しさん
2017/05/13(土) 09:04:37.48ID:1FO9O0uX さすがにそれはスレ違いだろう
390デフォルトの名無しさん
2017/05/13(土) 09:12:34.64ID:4agJqfcC いくらお題がアレとはいっても、
ここまで来てなんで一つもKotlinとかGoで書くやつがいないのか。
簡単だし時間かからないだろ?
Smalltalk馬鹿にしてる奴も意味不明。
ここまで来てなんで一つもKotlinとかGoで書くやつがいないのか。
簡単だし時間かからないだろ?
Smalltalk馬鹿にしてる奴も意味不明。
391デフォルトの名無しさん
2017/05/13(土) 10:51:00.22ID:Cn0XNRH7 お題が簡単すぎて面白くないからだろ
392デフォルトの名無しさん
2017/05/13(土) 10:59:13.12ID:n2tLG6k9 ほんまそれ。Pythonの例で問題の糞さが示されたと思ったが
393デフォルトの名無しさん
2017/05/13(土) 11:11:25.11ID:XdPYiSal python がいかに読みやすいかが示されただけだな。
394デフォルトの名無しさん
2017/05/13(土) 11:14:51.78ID:GlvX42FB Pythonの第三形態マダー?
395デフォルトの名無しさん
2017/05/13(土) 11:51:00.37ID:rBo1iP3S Pythonから次世代言語に乗り換える意味が見当たらない
397デフォルトの名無しさん
2017/05/13(土) 14:48:56.11ID:7U8nUyJb398デフォルトの名無しさん
2017/05/13(土) 16:19:26.54ID:XdPYiSal プログラミングエアプ勢の一発逆転の可能性
それが次世代言語の意義なんだよ。
それが次世代言語の意義なんだよ。
399デフォルトの名無しさん
2017/05/13(土) 18:54:00.95ID:zCDOTfft 問題が悪いとふんぞり返っていれば次世代言語がどこからか降って湧いてくるのか。
便利なスレだな。
便利なスレだな。
400あ
2017/05/13(土) 21:16:28.56ID:l2RlSRsK また、「エアプ」か。どこで流行ってんだその言葉。。
問題が悪いからと言って次世代言語が降ってこないのは当たり前と言うか、
自動車が発明される前に人々にニーズ調査したら「すごく早くて馬が疲れにくい、壊れにくい馬車がほしい」って答えただろうってフォードのおっさんの名言に尽きるだろ。
問題が悪いからと言って次世代言語が降ってこないのは当たり前と言うか、
自動車が発明される前に人々にニーズ調査したら「すごく早くて馬が疲れにくい、壊れにくい馬車がほしい」って答えただろうってフォードのおっさんの名言に尽きるだろ。
401デフォルトの名無しさん
2017/05/13(土) 21:56:48.51ID:QiNZfANm >>384
英文は無理でも言語名の綴りぐらいはちゃんと書こうね
ForceじゃなくてForth
FortrunじゃなくてFortran
pascalはPascal
(固有名詞だから頭文字は大文字、なお全部を大文字で書く・・・PASCAL・・・か否かは趣味の問題だが
全部を大文字で書くのは小文字がディスプレイやプリンタで表示・印字できなかった古い時代の名前というニュアンスが加わる)
英文は無理でも言語名の綴りぐらいはちゃんと書こうね
ForceじゃなくてForth
FortrunじゃなくてFortran
pascalはPascal
(固有名詞だから頭文字は大文字、なお全部を大文字で書く・・・PASCAL・・・か否かは趣味の問題だが
全部を大文字で書くのは小文字がディスプレイやプリンタで表示・印字できなかった古い時代の名前というニュアンスが加わる)
402デフォルトの名無しさん
2017/05/14(日) 06:47:23.26ID:FpH7uWr+ >>397
すぐ手前の流れも読まないPython使いってなんかマヌケだね
すぐ手前の流れも読まないPython使いってなんかマヌケだね
403デフォルトの名無しさん
2017/05/14(日) 11:16:19.57ID:g1XH9FW+ マジな話、いまだにショボいお題にご執心のハスケラの方がマヌケだけどね
404デフォルトの名無しさん
2017/05/14(日) 12:32:07.52ID:1QHY+inp ドア云々とかよりは実践向きだと思うけどな
405デフォルトの名無しさん
2017/05/14(日) 12:40:55.67ID:ZZLeiCLl まあドアよりはな
406デフォルトの名無しさん
2017/05/14(日) 13:56:58.74ID:KHWozqTm407デフォルトの名無しさん
2017/05/14(日) 14:23:56.19ID:tMuNfTLo408405
2017/05/14(日) 16:59:45.21ID:ZZLeiCLl409デフォルトの名無しさん
2017/05/14(日) 18:38:38.10ID:tMuNfTLo■ このスレッドは過去ログ倉庫に格納されています
ニュース
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 自民・麻生太郎副総裁 石破政権の1年は「どよーん」 高市政権発足で「何となく明るくなった」「世の中のことが決まり動いている」★2 [Hitzeschleier★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- 【山形】クマ駆除で誤射した猟友会隊員に町が1663万円請求へ...弾当たり男性大けが2023年 小国町 [nita★]
- 【WOWOW】UEFAチャンピオンズリーグ・ヨーロッパリーグ ★18
- とらせん
- 巨専】
- 【WOWOW】UEFAチャンピオンズリーグ・ヨーロッパリーグ ★17
- こいせん 全レス転載禁止
- わしせん ようこそ佐藤直樹くん ありがとう石井さん
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 最近レッテル貼りしてドヤ顔してるガチガイジが嫌儲に増えてない? [866936191]
- 木曜日のんなっしょい❗(・o・🍬)仕放題スレ🏡
- 【悲報】日本共産党、ツイッター速報にブチギレ法的措置WWWWWWWWWWWWWWWWWWWWWWWWWWWW [935793931]
- 官僚「台湾有事についての質問か、『政府として逐一答えない』と…(カタカタカタ)」高市「私1人で答弁できるわよ!」 [972432215]
