- 1 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 21:32:37.61 ID:0GjTSBdX.net]
- いざ、語ろうぞ。
前スレ 次世代言語議論スレ【Go Rust Haskell Scala Erlang Elixir】 [無断転載禁止]©2ch.net echo.2ch.net/test/read.cgi/tech/1479434349/
- 2 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 21:33:46.72 ID:7Nq7SR91.net]
- >>1
乙です。
- 3 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 21:36:55.91 ID:Xp+0sQ+z.net]
- おつおつ
- 4 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 21:43:38.85 ID:2PZ2/Gs1.net]
- >>1
乙乙!! 前スレ >>998 落ちこぼれのおいらでさえ半分は理解出来た。 (ちなみに、マージソートは図解されたアルゴリズム入門書読んでやっと理解してコード書けたと言う低脳っぷりだ) そいつ才能無い。 予言する。そいつ役立たず。 若かりし日のおいらでさえ触った事ないVBの仕事渡されて、その日にVB本買って勉強しながら書いてたっチューに。 分からんかったら質問しろよ。 入門書渡される有り難みも分かれよ。
- 5 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 21:56:37.03 ID:7Nq7SR91.net]
- >>4
まあ、意識はちょっと低いのかもですね。 Haskellは既存のパラダイムが通用しにくいので新参の入るいいチャンス、 却って染まってない方がいいと吹聴して、 よーし、じゃあ一発逆転したるとボルテージが上がったところであれだったから寂しかった。 前スレで統合開発環境の話がでてたけど、みなさんどんな感じですかね? 自分はemacsにghc-mod、company、hlintあたり(gitのチュートリアルのやつ)を入れてます。 布教できそうになったら、この辺の環境を整えてあげようと思ってますがご意見いただきたい。
- 6 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 22:09:51.95 ID:2PZ2/Gs1.net]
- 本格運用ならおいらの出番はない。
terapadがお気に入りだから、tab一回をスペース4個にする以外何もしてない。。。 最近日本語情報も増えてきたと言ってもYesodは最低限のwebアプリ作ってお終いばかりだから、英語出来ないとキツイかもね。 頑張って。
- 7 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 22:29:17.59 ID:j6x3YnbP.net]
- 前スレ903
>sum = foldr (+) 0 >product = foldr (*) 1 自分が思うにsum=, product=みたいに関数の定義はせずに、 使うところに直でfoldr (+) 0、foldr (*) 1 って書けるのが良い所なんじゃないかな…と というのは、まずなにより定義する関数の数が減るし、 しかも使う所に(短くコンパクトに)処理の定義が書かれてるから、 わざわざ関数の定義部を参照しなくてもなにやってるか分かってより可読性が上がると思うから メタレベルのロジックを抽象化して関数にしといて、その場での個別具体的な処理は 一時的な変数のごとくその場で合成して使い捨てる的な書き方を自分は良くするんだけどアンチパターンなんだろうか…
- 8 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 22:30:03.25 ID:ria0yk5C.net]
- 「7週間で7つの言語」だっけ?
ちょっと古いけど徐々に関数型が理解できるような構成になってるから最初に特定の言語の本すすめるよりいいかも
- 9 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 22:57:21.83 ID:7Nq7SR91.net]
- >>6
おけ、頑張ります。Emacsもいいっすよ。 >>8 あの本、Haskellの辺をちら見ですが所々ギャグ入ってて面白げでした。 周りから徐々に興味をもってもらうのは大事ですね。次は前スレで挙げられてた本と共に検討してみます。
- 10 名前:デフォルトの名無しさん mailto:sage [2017/02/11(土) 23:03:47.51 ID:7Nq7SR91.net]
- >>7
自分もスクラッチですね。 高階関数とλ式の組み合わせの良さって、その場でのプロセスの可読性とフットワークの軽さだと思ってます。 長けりゃwhereあたりで下に一時的に書いておくくらいで。 諸氏の意見を自分も聞いてみたいです。
- 11 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 02:03:25.90 ID:eJbIlXCt.net]
- F#で関数型っぽく?FizzBuzz
let Fizz x = (x%3=0, "Fizz") let Buzz x = (x%5=0, "Buzz") let FizzBuzz x = (x%15=0, "FizzBuzz") let compose flist x = let bind z f = match z |> fst |> f with |(false, _) -> z |(true, y) -> (fst z, y) List.fold bind x flist let transformer = compose [Fizz; Buzz; FizzBuzz] [1..50] |> List.map (fun x -> (x, string x)) |> List.map transformer |> List.map (fun x -> x |> snd |> printfn "%s")
- 12 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 02:11:44.19 ID:ekfokMCG.net]
- // Java8で関西型FizzBuzz
IntStream.rangeClosed(1, 1).mapToObj(num -> { if (num % 15 == 0) { return "FizzBuzz"; } else if (num % 5 == 0) { return "Buzz"; } else if (num % 3 == 0) { return "Fizz"; } return num; }).forEach(System.out::println);
- 13 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 02:38:59.43 ID:VGD3y4dr.net]
- >>12
関数型っつーかメソッドチェーンでは。 RubyとかJSでよくみるやつ。 JavaScriptで学ぶ関数型言語みたいな本を見たときは詐欺乙と思ったなそういえば。
- 14 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 02:42:05.20 ID:32IkYRZ8.net]
- で、スレタイに上がってる言語はいつ実用的になるのよ?
企業がバックにいるGo、Rustはともかく Haswellとか関数型信者のマウンティングにしか使われてない現状だし
- 15 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 02:43:39.06 ID:32IkYRZ8.net]
- 別に言語体型の勉強でHaswellとか学ぶのは勝手にすればいいけど、
わざわざ既存の言語のコミュニティに入ってきて「オブジェクト指向は古い!これからは関数型!」とか ほざかれると目障りで仕方ない
- 16 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 02:48:08.35 ID:ekfokMCG.net]
- >>15
Haswellは時代遅れ Cannonlakeやで、池沼のお兄さん
- 17 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 02:50:28.80 ID:RMJaLK6d.net]
- >>14
Go Googleの犬になるなら既に実用的 Rust 書くまでのハードル高いわライブラリがゴミだわでそのうち消える Haskell 高等選民様によって細々と使われ続けるが永遠にターンは来ない Scala ゴミ Erlang/Elixir ニッチな需要で生き残る
- 18 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 02:50:51.11 ID:eJbIlXCt.net]
- >>11と>>12の違いは何なんだろうか…
感覚的な話だけど、会社やチームづくりに例えるなら >>12は仲良く内製で開発(処理)する感じ >>11は派遣使ってアウトソーシングしまくる感じがしますねぇ…
- 19 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 02:55:00.32 ID:32IkYRZ8.net]
- そうそうHaskellだった
どう考えてもオブジェクト指向の方が応用範囲が広い GUIアプリとかHaskellで作れるのか?やるにしても気が遠くなるわ
- 20 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 02:57:25.21 ID:32IkYRZ8.net]
- まーjavaとc++にラムダの存在を教えてくれた事だけは感謝だわ
あれは確かに便利。
- 21 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 02:57:51.45 ID:oncvvJ9K.net]
- 剰余演算を全く使わないFizzBuzzがあったような…こうだっけ
import Data.List (zipWith3) import Data.Monoid data FizzBuzz = None | Fizz | Buzz | FizzBuzz | Number Int deriving (Eq, Show) instance Monoid FizzBuzz where mempty = error "something wrong" None `mappend` None = None None `mappend` Buzz = Buzz None `mappend` Number n = Number n Fizz `mappend` Buzz = FizzBuzz Fizz `mappend` _ = Fizz Buzz `mappend` _ = Buzz FizzBuzz `mappend` _ = FizzBuzz _ `mappend` _ = mempty toString :: FizzBuzz -> String toString (Number n) = show n toString fb = show fb lis = zipWith3 (\x y z -> x <> y <> z) (cycle [ None, None, Fizz ]) (cycle [ None, None, None, None, Buzz ]) [Number n | n <- [1..]] main = mapM_ (putStrLn . toString) $ take 100 lis
- 22 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 03:01:23.24 ID:VGD3y4dr.net]
- >>19
HaskellからC叩けるから、gtkなりQtなり使えば作るだけなら気は遠くならんぞ? オブジェクト指向と関数型は問題へのアプローチの仕方が違うだけで「オブジェクト指向の方が応用範囲が広い」はガセだ。 「オブジェクト指向は古い!これからは関数型!」とか言って殴り込んでくるやつが目障りなのは激しく同意するが。
- 23 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 03:01:59.08 ID:32IkYRZ8.net]
- 確かにマルチスレッドという問題が普通の現場でも表面化してきたのは頭の痛い問題だが、
それに対する答えが関数型とは全く思えないね。 確かにマルチスレッドの問題単体で見たら関数型の方が優れているかもしれないが、 それだけのためにオブジェクト指向のメリットを全部捨ててるんだもんなぁ。 こりゃ普及せんわと
- 24 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 03:18:20.25 ID:VGD3y4dr.net]
- オブジェクト指向といえばHaskellのLensって今どんな感じなんだろう。
- 25 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 03:50:30.23 ID:ashgYgUc.net]
- >>11
F#もうちょういシンプルに書いてよ https://www.rosettacode.org/wiki/FizzBuzz#F.23
- 26 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 04:35:42.91 ID:UIkULlkI.net]
- >>21
fizzbuzz(Max) :- fizzbuzz(M,A),writef('%w ',[A]),Max = M,!. fizzbuzz(M,A) :- fizzbuzz([_],M,[M,M,fizz,M,buzz,fizz,M,M,fizz,buzz,M,fizz,M,M,fizzbuzz],[],A). fizzbuzz(Ln,I,L,[],A) :- fizzbuzz(Ln,I,L,L,A). fizzbuzz(Ln,I,L,[A|R],A) :- length(Ln,I). fizzbuzz(Ln,I,L,[_|R],A) :- fizzbuzz([_|Ln],I,L,R,A).
- 27 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 04:44:39.39 ID:1dYlSNDw.net]
- OCaml、F#「!?」
- 28 名前:デフォルトの名無しさん [2017/02/12(日) 04:49:45.47 ID:eJbIlXCt.net]
- >>21
書き直してみた もはや最速DSLっぽい何かに… let if_true_then flist x = let bind z f = match z |> fst |> f with |(false, _) -> z |(true, y) -> (fst z, y) List.fold bind (x, string x) flist |> snd let Fizz x = (x%3=0, "Fizz") let Buzz x = (x%5=0, "Buzz") let FizzBuzz x = (x%15=0, "FizzBuzz") [1..50] |> List.map (if_true_then [Fizz; Buzz; FizzBuzz]) |> List.iter (fun x -> printfn "%s" x)
- 29 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 04:57:02.22 ID:eJbIlXCt.net]
- >>28は>>25へを意図してた
F#初めて書いたけど無限にリファクタリングしたくなるな楽しくて
- 30 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 05:00:54.45 ID:1dYlSNDw.net]
- あ、>>27は>>22へのレスね。
オブジェクト指向関数型言語なのに普及しやしねぇ。。。
- 31 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 09:15:26.58 ID:aVrWxIrs.net]
- Haskellにはoopの機能が無い?
Smalltalkさんのことバカにしとるんですか?
- 32 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 09:47:43.03 ID:1dYlSNDw.net]
- HaskellにOOPは無いよ。
なぜsmalltalk?
- 33 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 10:04:50.15 ID:ekfokMCG.net]
- OOPとFPを創聖合体させたScalaが最強なんやなって
- 34 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 10:11:27.09 ID:FUIQXWCG.net]
- どんな言語使っても糞なものしか作れんやつはいる。
まずは「プログラミング作法」でも読めと言いたくなる馬鹿が多すぎる。
- 35 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 10:15:06.25 ID:pm4QJbUk.net]
- >>34
タイトル間違えてる時点で同類だろ せめて読んでから言おうな ソフトウェア作法とプログラム書法のどっちか知らんが
- 36 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 10:18:41.84 ID:pm4QJbUk.net]
- >>20
そもそもC++erとHaskellerは重複してるだろ お前も発言からマトモにプログラム組んでるやつとは思えない
- 37 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 10:21:55.70 ID:ekfokMCG.net]
- >>35
どっちンゴ?読んでみたい けど紙の本しかない遺物やんけ
- 38 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 10:26:15.52 ID:pm4QJbUk.net]
- >>37
すまん俺が間違えてた さらに同じ著者で別にプログラミング作法と言うのが出ている 自分の方が古い知識で大恥かいてしまった
- 39 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 10:28:10.46 ID:pm4QJbUk.net]
- >>34
謝罪はこっちに言うべきだったな 失礼な物言いで大変申し訳ない
- 40 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 10:34:32.79 ID:l4guIXkt.net]
- 爺の頭に浮かぶのは
記述言語にRATFORを採用した方の本
- 41 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 11:44:53.86 ID:ekfokMCG.net]
- 初版1980とか2000とか、ワイより年上で草生える
こんな時代から言われてることが、未だ当たり前どころか知られることもなく、 次世代言語が産まれては消え、ジャップランド土人は炎上プロジェクトとデスマ いったい何なんや?
- 42 名前:デフォルトの名無しさん [2017/02/12(日) 12:14:02.72 ID:D9dWxmTY.net]
- >>15
次世代言語スレにこの書き込みは面白いな ここまで見事なブーメランはそうそう見れないぞ
- 43 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 13:46:55.00 ID:SEA4QyVV.net]
- ブーメランで思い出した
GUIとオブジェクト指向は直交する概念だから、GUIと関数型の組み合わせでもOK
- 44 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 14:04:50.15 ID:mqpRMrYe.net]
- Prologはやっぱり凄いな。数値演算がない。lengthが隠してるのか。 >>26
- 45 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 14:10:48.77 ID:ekfokMCG.net]
- >>44
言うほどか? 正直何書いてるのかさっぱりわからんMMMM
- 46 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 14:57:40.58 ID:32IkYRZ8.net]
- >>42
俺のは苦情だよ。どうせQiitaとかでマウンティングしてる奴らが多そうだしなここ
- 47 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 15:08:07.55 ID:YSMQxpB5.net]
- 直近の次世代言語はTypeScriptだろうな
- 48 名前:デフォルトの名無しさん [2017/02/12(日) 15:11:57.61 ID:7CrFTlLt.net]
- >>46
>>14も>>19も>>23も苦情なの? わざわざ次世代言語のコミュニティにマウンティングしに来てるようにしか見えないけど
- 49 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 15:17:28.61 ID:32IkYRZ8.net]
- >>48
な、イラつくだろ? これと同じ事を日常的にやってるのが関数型信者(というよりHaskell信者)。
- 50 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 15:23:32.88 ID:ZBx4BhwO.net]
- 負けず嫌いでマウンティングしようと必死なんだけど、
叩くために持ち出した内容すら満足なレベルでなくて、失敗してる感じ。 オブジェクト指向の擁護側からも煙たがれてそうだね。
- 51 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 15:41:22.09 ID:ekfokMCG.net]
- >>49
お薬のお時間ですよ
- 52 名前:デフォルトの名無しさん [2017/02/12(日) 15:44:30.40 ID:hey2nQ+P.net]
- >>49
俺はどこにもマウンティングしたことないのに今被害受けてるんだけど? しかもその上さらに「な?イラつくだろ?」って勝ち誇られてるんだけど? Qiita に出没するとかいうよくわからん関数型信者よりおまえがうざいよ 嫌だ嫌だといってる相手と同じことして恥ずかしくないの?
- 53 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 16:16:33.77 ID:0v9V4t1K.net]
- >>49
お前他板も荒らしてそうだな。
- 54 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 16:20:13.28 ID:aRM3PRRH.net]
- 「相手は悪だからこちらの手段は正当である」ってどっかで聞いた理屈だな。
言語パラダイムも大事だが、周辺ツールや標準ライブラリの充実も大事じゃないかね。 そういう意味で「電池付属」を推してる次世代言語ってGoくらいか?
- 55 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 16:43:28.53 ID:Lac5VkvP.net]
- >>44
今日twitterにこのコードの解説が載ってたけど難しいですね。 わざとそうしているんですね。
- 56 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 17:04:14.13 ID:FjwSaYM1.net]
- >>44
Prologのプログラムは読むだけだと、どの言語より易しいっていう 印象ですが、このコードは難しいですね。剰余計算どころか計算が でてこない。Mが沢山ならんでいるのもわけが分かりません。
- 57 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 17:05:37.62 ID:SEA4QyVV.net]
- 競技プログラミングの類は難しい方が楽しい
相手がそういう競技を選んだから試合中はわざとそういうことをするのは正当である
- 58 名前:55 mailto:sage [2017/02/12(日) 17:20:26.48 ID:rzlVGyJj.net]
- >>56
>>22のコードはtwitterでPrologおじさんとして知られている方が 書き込んだのではないかな。今日の午前中に連続して5通くらい、 このコードの解説を書き込まれていました。
- 59 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 17:31:14.49 ID:ashgYgUc.net]
- PrologのはClojureの例に載ってたこれと考え方近いのかな?
いくら何も大文字一文字が多すぎな気がするが (take 100 (map #(nth (conj (cycle [% % "Fizz" % "Buzz" "Fizz" % % "Fizz" "Buzz" % "Fizz" % % "FizzBuzz"]) %) %) (rest (range)) )) #は部分適用 %は部分適用時に引数を差し込む位置 (nth [1,2,3] 2) => 3 (conj [1,2,3] 2) => [1 2 3 2] (take 5 (cycle [1,2,3])) => (1 2 3 1 2) (take 5 (range)) => (0 1 2 3 4) (take 5 (rest (range))) => (1 2 3 4 5) (#(nth % 2) [1,2,3]) => 3
- 60 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 18:09:04.18 ID:rzlVGyJj.net]
- >>59
Clojureのコードの方はメタな表現。Prologの方は非決定性の単純な再帰。 その違いはあるけれど、やっていることは同じのように思います。
- 61 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 18:53:57.11 ID:32IkYRZ8.net]
- 前スレ
981 デフォルトの名無しさん sage 2017/02/11(土) 20:43:04.84 ID:7Nq7SR91 >>978 >初心者はむしろJavaとかよりHaskellのが算数・数学に近いから馴染み易い。 これ、自分もそう思ってて、 会社の初心者のエンジニアにこう吹き込んでプログラミングHaskell渡したら、 舐めてんのか的なリアクションだったわ。 実績ある?布教したいので、うまいやり方を教えて欲しい。 983 デフォルトの名無しさん sage 2017/02/11(土) 20:50:51.13 ID:2PZ2/Gs1 それはもう、エンジニアとして初心者でも、それなりに手続き脳に固まってるんだと思う。 手前勝手だが、パブーにHaskell入門以前ってepubの本置いてるので、使えると思ったら読ませてみて。 (パブー Haskell で検索) あんまり純粋関数型言語ってブランドに振り回されてもいけないと思う。
- 62 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 18:55:17.88 ID:32IkYRZ8.net]
- 初心者のエンジニアにわざわざHaskellを布教する鬱陶しさ
それで嫌な顔されたら「手続き脳」
- 63 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 19:05:04.40 ID:ekfokMCG.net]
- な、手続き脳だろ?
- 64 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 19:06:39.11 ID:ElZAn973.net]
- 手続き脳は悪口じゃなくて自身の経験からですが。。。
私はJavaも触った上でHaskellから得られるものは多いと言ってますが、あなたは? (C#がメインですが)
- 65 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 19:12:03.87 ID:VGD3y4dr.net]
- >>64
>>20 >>23 って言ってるから何言ったってしゃーないんじゃね? 坊主憎けりゃ袈裟までって奴だと思う。 実際Haskell原理主義者がうざいっていうのは超同意するところではあるんだけど、 本人がその原理主義者と同じ行動してりゃ世話ないわ。
- 66 名前:26 mailto:sage [2017/02/12(日) 19:18:08.80 ID:UIkULlkI.net]
- >>56 fizzbuzz(M,A) :- fizzbuzz([_],M,[M,M,fizz,M,buzz,fizz,M,M,fizz,buzz,M,fizz,M,M,fizzbuzz],[],A).
この本体( :- の右側)のfizzbuzzの第三引数のリストのMがPrologプログラマにとっては 盲点なんです。本来は [1,2,fizz,4,buzz,fizz,7,8,fizz,buzz,11,fizz,13,14,fizzbuzz] であるところを全部Mを置いたらfailしてしまうと考えてしまうのです。 ところが、実際に利用するのは先頭の要素だけ。一時的に [1,1,fizz,1,buzz,fizz,1,1,fizz,buzz,1,fizz,1,1,fizzbuzz]となったとしても 次はバックトラックしてこの束縛は解消してしまいますから。POPして出てくるのは どれもMで、すなわち第二引数と同じであるサインが出続けるというわけです。
- 67 名前:26 mailto:sage [2017/02/12(日) 19:26:06.73 ID:UIkULlkI.net]
- それではfizzやbuzzの時はどうなのか。これはMではありませんから、
第二引数と無関係です。それでこのリストからPOPされたものが最後の 引数、すなわち、Xとなります。解です。 Mの場合はカウンターリストLnの長さがlength述語でMとなり、それがXと なりますから、1,2,4,7,8,11・・などが解として埋まっていくのです。
- 68 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 19:37:29.11 ID:32IkYRZ8.net]
- いやいや初心者でまだ仕事に使う言語覚えるだけで精一杯のやつに
Haskellなんか無理やり押し付けて、 それで拒否られてるのに性懲りもなくまだ布教しようとしてる奴はヤバイでしょ。 マジで宗教じゃん。
- 69 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 19:43:22.57 ID:SukjnWiy.net]
- 一番最初に授業でやったのがLispだったけど特に抵抗は無かったなぁ
でも関数型は手続き型に較べて抽象度が高い傾向にあるし頭弱い人には厳しいと思う
- 70 名前:デフォルトの名無しさん [2017/02/12(日) 19:46:25.84 ID:32IkYRZ8.net]
- まーウザがられるのは承知でやってるからね。
普段Haskell原理主義がやってる事と同じ事を そのままこのスレでやってみただけだし。
- 71 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 19:47:01.73 ID:52ZDIEYO.net]
- 仕事で使う言語とは別に、コードのまとめ方の勉強としてHaskell触らせるのがそんなにおかしいかね?
仕事で使わないものの勉強を押し付けられてたまるかっていうのは分からんでもないが、地力育てるって意味はあるしな。
- 72 名前:デフォルトの名無しさん [2017/02/12(日) 19:49:46.33 ID:32IkYRZ8.net]
- >>71
自分が新人の頃の事忘れてるんじゃねーの?お前 仕事を覚えなきゃいけない、職場にも馴染まなきゃいけない。 そんな大変な時期に新しくもう一つ言語なんて学ぶ余裕ある訳ないだろ。 押し付けって言うんだよそういうのは。 本人の為に全くなってない。
- 73 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 19:51:19.51 ID:ElZAn973.net]
- ?
教育期間とか無かったですか? Haskell教えるっと言っても、触り程度で良いですし。 それなら、半日も掛かりませんよ。 それでも十二分に大きなものを得られます。 (教えたいのはHaskellではなく、構造を見抜く力。Haskellはその手段) 次の日からはどうぞ仕事用の言語を覚えて下さい。
- 74 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 19:53:17.09 ID:52ZDIEYO.net]
- >>70
狂人の真似とて大路を走らば、即ち狂人なり。 って言葉知ってる?
- 75 名前:デフォルトの名無しさん [2017/02/12(日) 19:55:10.92 ID:32IkYRZ8.net]
- >>73
そういうのが有難迷惑って分からないかな? 自分がハマってるからって、仕事と関係ない言語を先輩後輩の力関係使って無理やり触らせるとか迷惑すぎるから。 そんな暇があるなら仕事のことを先に覚えたいに決まってるよね?新人君の気持ちとしては。
- 76 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 19:59:58.88 ID:ElZAn973.net]
- Haskellは手段書いてるやん。
言語覚えるより考え方覚える方が重要なのはプログラマなら分かるよね? 文法覚えたけど入門書以上の事何も書けないって奴を何人も見て来たよ。
- 77 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 20:06:49.91 ID:52ZDIEYO.net]
- >>72
Haskellじゃねーけど新人のころに直属のOJTに 仕事と全く関係無いLinuxの低レベル処理まわりの勉強させられたが その時には役に立たなくても数年後に効いたのよね。 全然考え方の違う言語さわって見聞広める分にはいいんじゃねえの。 まあ強制する謂れはないかもしれんが。
- 78 名前:デフォルトの名無しさん [2017/02/12(日) 20:08:53.00 ID:32IkYRZ8.net]
- だったら仕事を通じて必要なことを教えてやればいいだけ
訳の分からない言語の本読ませるより、そっちのほうがよっぽど新人も言う事聞くわ。
- 79 名前:デフォルトの名無しさん [2017/02/12(日) 20:09:42.74 ID:32IkYRZ8.net]
- >>76へのレスな。
- 80 名前:デフォルトの名無しさん [2017/02/12(日) 20:13:57.00 ID:32IkYRZ8.net]
- 大体自分が新人の頃考えてみろって話だよ。
死ぬほど覚える事一杯あるのに、仕事と関係ない言語の本なんて読んだってアタマに入る訳ないだろうが。 お前らだってHaskellだの勉強始めた時は ある程度仕事も覚えて余裕ができた頃だろうが。 自分と新人を同じ土俵で考えるなよ。
- 81 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 20:23:57.35 ID:VGD3y4dr.net]
- >>80
院生時代に学会と論文書きで死にそうになりながらHaskell覚えてすまんな
- 82 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 20:27:34.22 ID:VGD3y4dr.net]
- むしろ新人の頃は生まれて一度も使ったことがないC++と関連ライブラリの使い方覚えるのに必死だったな。
別に既存コードで使ってる部分ないのにわざわざテンプレートもやらされてからに。 それでも今役に立ってるからいいが。
- 83 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 20:27:37.03 ID:GC8FZ4sL.net]
- Haskell叩き名目に周囲に憂さ晴らししてるだけだろ
嫌儲に帰れ
- 84 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 20:32:01.96 ID:VGD3y4dr.net]
- いやHaskell原理主義者にヒャッハーされた憂はめっちゃ良くわかるんだよな。
だからこそそいつらと同じ事やって同じところに堕ちてりゃしゃーないわな感が強い。
- 85 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 20:33:07.80 ID:zPfOuuFT.net]
- 関数型のおいしい部分は別にHaskellじゃなくても非純粋関数型で学べるし
そういう部分だけ勉強したいって人にはHaskellじゃなくてもっといい選択肢があるんじゃないかな Haskellだとモナドなんかの初心者には理解しにくい部分がどうしても気になる 今は書籍もサイトも充実してきて、順を追って学べば誰でも既存のモナドを使えるレベルになれるけど それってこの場合の本来の目的とは違うし 今Haskellやってる人は自分も含めて楽しいからやってるって人がほとんどでしょ
- 86 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 20:36:00.02 ID:ol+GRPUy.net]
- マウンティングの為に悪意で薦めるか、相手のことを思い善意で薦めるか、そこじゃね?
- 87 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 20:36:05.84 ID:VGD3y4dr.net]
- >>85
そういう観点から言うとOCamlかScala辺りが候補か?
- 88 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 20:38:14.03 ID:bL+fjtQh.net]
- >>87
LispかOCamlでしょ ScalaはJavaやった後でなきゃ勧めちゃ駄目だと思う
- 89 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 20:39:59.90 ID:VGD3y4dr.net]
- Lispか。Scheme辺りなら処理系も手に入りやすいな。
- 90 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 20:46:37.83 ID:ol+GRPUy.net]
- それでSICP読めとかやると今度はLISP叩きが始まるのか。
- 91 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 20:47:36.66 ID:ElZAn973.net]
- >>80
むしろ新人の頃のが暇じゃね? どんなコード書く(書ける)か分からん新人に、いきなり仕事は振らない。 独習C渡されて、数日はひたすら入門書読んで練習問題解くだけだった。(教育期間) 確かに最初の仕事はCだった。(と言うか、C++でベターC) だけど、Javaだって当時仕事と関係無いけど自分で覚えた。 VBに至っては一回きりの仕事な上に、教えて貰ってすら無い。 覚えながら書いた。 文法覚えるより、練習問題させたかったんだと思うけどな。 割とすぐにVBだったし。
- 92 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 21:02:49.53 ID:b/z7m0Iw.net]
- LISPは括弧の羅列とか逆ポーランド記法とか、虫酸が走る要素満載だから
OCamlとF#で決まりだな
- 93 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 21:26:51.34 ID:Lac5VkvP.net]
- 関数型といっても、テキスト処理なんかには全く無力だから。
これからは前途多難だな。
- 94 名前:デフォルトの名無しさん [2017/02/12(日) 21:32:22.04 ID:D9dWxmTY.net]
- 括弧の羅列で虫酸が走るやつはLispエアプだってはっきりわかんだね
Cの中括弧の羅列のほうがよっぽどウザい
- 95 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 21:32:47.33 ID:9Y6cAsF4.net]
- SICP通ってないのにプログラマ面して次世代かたってんのか
だいたいGoのベースにあるCSPがいつの時代の概念かしってんのかよ 正直次世代の言語は次世代のハードがないかぎり生まれて来ない 現行のアーキテクチャでやりつくせることは概ねどんな言語でもやりつくせる あとはシンタックスシュガーのこのみでしかねえんだよ
- 96 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 21:33:18.96 ID:ashgYgUc.net]
- ClojureとF#で
JavaScriptで関数型っていうのを詐欺って書いてる人いたけど 実際にWebサイトいじくるコード書きながら部分的だけど関数型の考え方を身に付けることができるから 手続き脳からの脱却する初手としては有効だと思う
- 97 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 21:57:05.96 ID:ElZAn973.net]
- >>93
え、テキスト処理に関数型は向いてると思うが。。。 LLのが手軽ってだけで。 だからこそ堅牢性、並列性とテキスト処理必要なWeb鯖とか向いてるとも思う。
- 98 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 21:59:08.12 ID:RJmiTmR1.net]
- 今この時代SICP読むのはもう趣味でしょ
CTMとかなら得るものあるだろうけど
- 99 名前:デフォルトの名無しさん mailto:sage [2017/02/12(日) 23:09:03.26 ID:wxhE3H1K.net]
- ocaml覚えた動機は、エロゲーからテキストをぶっこ抜くツールを
新作ゲームに対応させるため
- 100 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 00:49:48.93 ID:9ylADHSn.net]
- CTM欲しいけど日本語のはもう絶版なんだろうか
いずれにしてもSiCPの枠組みをでてない次世代ってなんなんだって話
- 101 名前:デフォルトの名無しさん [2017/02/13(月) 01:50:16.82 ID:bklcWYrm.net]
- >>91
> >>80 > むしろ新人の頃のが暇じゃね? > > どんなコード書く(書ける)か分からん新人に、いきなり仕事は振らない。 > 独習C渡されて、数日はひたすら入門書読んで練習問題解くだけだった。(教育期間) おま、それは典型的な駄目な部署の教育方法じゃねーかw そりゃ教える側はその方が楽だよ。本渡してわかんないことあったら聞けってのは。 でも、教育する、他人を指導する、という役割においては駄目駄目よ。 もっとちゃんと教えるところは新人で暇になんてならないから。
- 102 名前:デフォルトの名無しさん [2017/02/13(月) 01:52:14.35 ID:bklcWYrm.net]
- >>92
リスプは逆ポーランド記法じゃない
- 103 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 01:57:28.83 ID:3qGYyBZv.net]
- HP電卓か?RPL : reverse polish lisp
- 104 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 04:00:04.87 ID:gZ/8QOyo.net]
- >>97
本質的? に項変換だからね。関数型は。 論理型は推論と同一性。思想の解明というようなレベルの 知識プログラミングの領域では優劣は明らか。
- 105 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 04:24:42.25 ID:rgdFF/HE.net]
- >>104
ごめん、よく分からない。 具体例を挙げてもらえるとありがたい。
- 106 名前:デフォルトの名無しさん [2017/02/13(月) 05:33:46.88 ID:vGCo2kzU.net]
- あながちマウンティングしたいだけの奴が多いのは否定できないな
- 107 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 05:45:53.47 ID:gZ/8QOyo.net]
- >>105
思想を解明する知識プログラミングは殆ど手付かずだと思うので、極めて簡単な文例で。 「津軽海峡冬景色」からつぎの一節。論理型だと以下になります。二つのパターンを 見比べ、重ね合わせて理解します。こんな端的な表現が関数型にできるかということです。 私は帰ります --> 私は,帰ります. 私は --> 私,は. 私 --> [私]. は --> [は]. 帰ります --> 帰り,ます. 帰り --> [帰り]. ます --> [ます]. 文 --> 名詞句,動詞句. 名詞句 --> 名詞,後置詞. 名詞 --> [私]. 後置詞 --> [は]. 動詞句 --> 動詞,助動詞. 動詞 --> [帰り]. 助動詞 --> [ます].
- 108 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 06:41:13.16 ID:GOtEVvRl.net]
- それ、テキスト処理、違う
- 109 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 06:51:29.86 ID:dJZmi+77.net]
- >>101
ああ。 ブラックだったさ。 そんなしっかり教える環境なら、そもそも新人にも教える側にも選択の余地なんぞないだろ。 教え得るノウハウあるんだから。
- 110 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 06:57:26.15 ID:dJZmi+77.net]
- >>104
Prologと比べられればね。 論理の勉強はあんまりしてこなかったから、だいぶ初心者用の入門書しか理解出来なかったな。。。 Haskellは巷で流行ってるのよりは向いてると思う。 K1だかKL1だかって並列論理型言語があるらしいが、研究室専用なのか処理系には出会えてない。 触ってみたかった。
- 111 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 07:30:07.81 ID:gZ/8QOyo.net]
- 関数型は冗長な情報をより洗練されたものに書き換えるためのもの。
ところが、19-18世紀の大思想を読み解くというような対象は、 「ここに書かれていることは全て正しい」と仮定して掛かるような対象。 関数型のコンセプトとは全く合わない。論理型はテキストを述語化してから それ自体は動かさず、補間情報を探すもの。我々が過去の思想を理解しよう とする時の態度と一致する。
- 112 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 07:30:33.52 ID:PoWXNXBh.net]
- >>110
第5世代アーカイブにPCで動く処理系のソースがあったような
- 113 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 07:44:49.04 ID:dJZmi+77.net]
- 第5世代言語なのは知ってたけど、アーカイブなんてあったのね。
ありがとう。
- 114 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 07:57:27.96 ID:gZ/8QOyo.net]
- >>112 >>113
もう10年は前だとおもいますが、Webを整理して解消する際にCDが売り出され ました。最近、この再版を求める動きがありますが難しいようです。 Ubuntuを含むDebian系Linuxには32ビット時代はKL1のパッケージが載って いましたが、64ビットになってからはないようです。
- 115 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 08:06:53.18 ID:dJZmi+77.net]
- 10年前でも2007年。。。
90年代の遺産だと思っててごめんなさい。 そして、追加情報感謝です。
- 116 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 08:50:20.89 ID:fjEEeyAB.net]
- Σプロジェクトは出来たものが恥ずかしいゴミ過ぎて
この手の資料公開は無かったみたいだね。 https://ja.m.wikipedia.org/wiki/Σプロジェクト
- 117 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 08:54:34.63 ID:fjEEeyAB.net]
- これもオモロイ
シグマはどこへ消えた? www.yamdas.org/column/technique/sigma.html
- 118 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 09:42:44.82 ID:mcSza9v8.net]
- >>114
KL1は上田研究室が最後の砦ですね。 こういう時はInternet Archiveがありがたい。 並行論理プログラミング (KLIC version 3.01) www.ueda.info.waseda.ac.jp/software-j.html けいえるわん www.ueda.info.waseda.ac.jp/~takagi/kl1/ 並列論理型言語処理系 KLIC のページ web.archive.org/web/20100815015107/http://www.klic.org/software/klic/index.ja.html 第五世代コンピュータ プロジェクト アーカイブ web.archive.org/web/20150121033015/http://www.jipdec.or.jp/archives/icot/ARCHIVE/HomePage-J.html
- 119 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 10:33:26.43 ID:9gMxi0s2.net]
- >>107
これだけなら演算子作れば関数型でも簡単に出来そうな気が 利点が良くわからない
- 120 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 11:00:52.83 ID:gZ/8QOyo.net]
- >>119
それが論理型との違いでしょう。論理型は上の方の定義を書き終えたら できたできた。「私は帰ります」からはこれ以上の情報はない。この後で、 「どこに帰るのか」「いま私はどこにいるのか」「私とはどんな私だ」と いうような情報を引数に付加するかも知れないが、それは後の話です。
- 121 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 11:23:25.21 ID:nSPUHPPd.net]
- >>120
耳に入ってくる言葉の端々を述語として書き並べることが論理プログラミングと いうことですか?
- 122 名前:120 mailto:sage [2017/02/13(月) 12:16:38.41 ID:gZ/8QOyo.net]
- >>121
基本的にそうだと思っています。構造は述語だけで、後は構造を持たずシンボル をならべただけのものです。 ただ誤解がないように言うのですが、プログラミングの中心的な課題が思想を 解明することになるのは、それこそ自動車の無人自動運転が当然の時代となる くらい先だと思います。ですから現時点でこの次世代言語スレで関数型言語が 不適格であるとは全然思っていません。
- 123 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 12:20:56.87 ID:l1N3ICNN.net]
- クラスベースOO=C++もあるけど、もっとわかりやすく便利で理想的なやつ
関数型=Haskell以下同文 論理型=Prolog以下同文
- 124 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 13:19:41.96 ID:9gMxi0s2.net]
- >>122
プログラミングというよりも、論理?の列挙に見えるんですけど つまりそういう事を言ってるんですか?
- 125 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 13:23:43.98 ID:9gMxi0s2.net]
- 論理というか集合の要素?
演算はまた別になってしまうだろうし、よくわからない こういう記述だけで圏より素朴に演算を定義できるとも思えないし
- 126 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 15:24:22.49 ID:l1N3ICNN.net]
- 適当に具体例を列挙してボトムアップする能力も評価されるべき
トップダウンとマウンティングは似ている
- 127 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 15:41:49.88 ID:HSaRDCl9.net]
- オブジェクト指向なんてダッセーよなー、関数型のほうが面白いよなー
- 128 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 16:28:13.09 ID:AmcZDedG.net]
- 今までの歴史からして遠からずPythonすら置き換わる汎用言語も出るだろうけどどんなだろうな
まったく違うパラダイムだろうか
- 129 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 17:10:45.69 ID:X/RmwKxM.net]
- 関数だけを使う関数型言語っていうのは初めにあって、
次にそれをパワーアップさせてリストだけを使うリスト型言語が出来て 次にそれをパワーアップさせてオブジェクトだけを使うオブジェクト型言語 ができたんだからオブジェクト型が今のところ最先端だな。 次のパラダイムは何か新しい一つの物だけを使った言語だと思うな。
- 130 名前:デフォルトの名無しさん [2017/02/13(月) 18:31:51.83 ID:lgjAPN1q.net]
- >>129
マルチパラダイム言語ディスってんの?
- 131 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 19:18:42.74 ID:HSaRDCl9.net]
- >>129
某ゲームメーカーの昔のCMネタで書き込んだだけなのに、こうやって釣れるんだよな。 ネットのOOP解説関連のHPも、頭悪い人間や旧世代を見下してるの多いし、 同じことを歴史を繰り返して関数型にやられてるだけじゃん。
- 132 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 19:26:15.09 ID:l1N3ICNN.net]
- 関数の中に関数を書くっていう関数型が初めにあったとすると
クラスの中に関数を書くっていうのは別にパワーアップしてない 粉飾パワー系
- 133 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 19:27:22.92 ID:MQ2CnNxG.net]
- 因果は巡るのじゃw
- 134 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 19:41:12.63 ID:X/RmwKxM.net]
- >>132
オブジェクト型はオブジェクトの中にオブジェクトを書くんだよ。 メソッドはオブジェクトのインターフェイスでオブジェクトの一部として考えられる オブジェクトのコアの中にオブジェクトが入って外部から遮断されてる。
- 135 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 19:51:42.41 ID:zwnL86Oa.net]
- OOP言語のJavaで作られたものは数あれど、
関数型言語のHaskellで作られたものって何があるん?
- 136 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 20:02:53.28 ID:l1N3ICNN.net]
- 人間が作ったものは人間の手柄
それを巧妙なマウンティングで言語の手柄にされてしまう 更に言語の上にパラダイムが乗っかってパラダイムの手柄になる
- 137 名前:デフォルトの名無しさん [2017/02/13(月) 20:06:34.96 ID:SRrzQdIe.net]
- 129はなんか間違ってるだろ。
- 138 名前:デフォルトの名無しさん [2017/02/13(月) 20:12:19.53 ID:SRrzQdIe.net]
- 関数型とオブジェクト指向は共存できるだろし。
説明はできないが、別次元の概念だとおもうぞ。 進化するとか比較対象になるものではないだろ。 オブジェクト指向をベースにした純粋関数型言語って可能だろ?
- 139 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 20:17:27.40 ID:l1N3ICNN.net]
- オブジェクト指向を入れると型推論のアルゴリズムが複雑
ゆえに現実主義者はダックタイピングでオブジェクト指向するか純粋関数型で型推論する
- 140 名前:デフォルトの名無しさん [2017/02/13(月) 20:23:35.51 ID:SRrzQdIe.net]
- ぐぐった、抜粋。
関数型言語のウソとホント - Qiita ?「関数型言語もいずれオブジェクト指向などのスタイルを取り入れたマルチパラダイムな言語になる」 関数型言語は関数というたったひとつの武器だけをひたすら研ぎ澄まして問題に立ち向かおうとする言語であり、それ以外の武器はかえって邪魔になります。 OCamlなんかはCamlという言語にオブジェクト指向的な機能を付け加えたObjective Camlが改名されたものだそうですが、OCamlが積極的にオブジェクト指向で設計されているようには見えないです。 Haskellに至ってはオブジェクト指向を取り入れる動きはほとんど皆無ですし、そうする必要がないです。 O'Haskellといってオブジェクト指向の概念を取り入れたHaskellが提案されたこともあったようですが、現在O'Haskellが使われているという話は聞いたことがありません。 最近では関数型以外の言語が関数型のスタイルを取り入れる動きがしばしば見られる一方で、関数型のほうから例えばオブジェクト指向を取り入れる動きはあまり積極的ではないようです。 しかし近年ではやはりScalaがオブジェクト指向と関数型の融合を目指したものとして台等しています。 qiita.com/hiruberuto/items/26a813ab2b188ca39019
- 141 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 20:24:33.73 ID:9ZqcI6aJ.net]
- >>139
純粋関数型にとって型推論とはそんなに重要なものなのですか?
- 142 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 20:54:36.75 ID:3XLU4PQN.net]
- OCamlは型システムが柔軟で強力なら、大抵の場面でOOじゃない方が楽だってことを教えてくれる良い言語
わざわざオブジェクトにするのは、遅延結合が必要な所とヘテロジーニアスなオブジェクトを統一して扱う場合くらい 弊害として、過激なOO不要論者になる可能性がある
- 143 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 21:01:24.48 ID:l1N3ICNN.net]
- >>141
個人的には、重要かどうかではなく本当に実現するのか騙されてるだけなのかを知りたい
- 144 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 22:01:47.07 ID:tn7uWAuX.net]
- 当たり前なのかもしれないけど
データと処理が強く結びついてるドメインにおいてはオブジェクト指向の恩恵のほうが大きいんじゃね グラフィック系のツールで選択してるブラシによっていろんな動作が変わるやつとか データと処理が一箇所にまとまっててその結びつきが強制されてることにどの程度の価値を見出すか Strategyパターンみたいなもを例に考えるといい気がする
- 145 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 22:17:28.21 ID:JsOR7Nm6.net]
- 実践 Common Lisp とか読んでれば common lisp はだいぶ穏やかな言語だって
思うんだけどね。 あれもマクロマクロうるさい馬鹿のせいで偏見持たれてる気がする。
- 146 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 22:21:19.27 ID:ut1LFOtS.net]
- >>145
わかる そんなに尖った機能無いよな
- 147 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 22:22:45.43 ID:GOtEVvRl.net]
- >>140
おはスケル なんJ民かな
- 148 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 22:23:57.02 ID:GOtEVvRl.net]
- Lispはかっこつけすぎ
- 149 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 22:56:11.66 ID:HSaRDCl9.net]
- プログラミングは免許制にすればいいよ、
関数型プログラミングができるかどうかで。 馬鹿プログラマでも扱えるように色々と冗長にする -> 冗長だから手番が増えてさらにプログラマが必要となる -> 馬鹿プログラマが補給される このコンボが決まって悪循環が続いている、と。 別に関数型プログラミングが全能とは思わないが、現時点でのひとつのリトマス試験紙にはなるかと。
- 150 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 22:56:44.30 ID:g1s3e9Z7.net]
- ((L)(((i)s)p)))
- 151 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 22:58:39.38 ID:g1s3e9Z7.net]
- >>149
関数型の基礎になる数学知識があるかを問うたほうが良さげ
- 152 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 22:59:44.86 ID:ut1LFOtS.net]
- マクロが自然に馴染む構文というと、結局S式しかないという気はする
IDEでマクロの構文まで面倒見てくれる言語ってなんかある? あれば使ってみたい
- 153 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 23:44:14.31 ID:HSaRDCl9.net]
- >>151
そうかもね。抽象化の最たるものだね、数学は。 >>152 emacsのLispモードについてんじゃないの?(適当)
- 154 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 23:50:25.63 ID:ut1LFOtS.net]
- >>153
「S式(lisp)ならマクロに対する特別な支援は(殆んど)要らない」ってこと Juliaでマクロ書いてて思ったのよ、インデント崩れたりとか
- 155 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 23:57:47.13 ID:kQGSvZ2q.net]
- S式は括弧使って構文解析サボってるだけ。
逆ポーランドとかの怠け記法と同類。
- 156 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 23:58:31.38 ID:HSaRDCl9.net]
- >>154
なる。Julia知らんけどemacsなら(ry
- 157 名前:デフォルトの名無しさん mailto:sage [2017/02/13(月) 23:59:24.88 ID:HSaRDCl9.net]
- >>155
emacsなら(ry
- 158 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 00:35:59.85 ID:gfvqdCIF.net]
- 数学知識より国語力高いやつのほうが欲しい
- 159 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 00:40:40.70 ID:4G8SInJT.net]
- 数学知識。まずは自分の国語力を見直そうか。
- 160 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 00:46:48.47 ID:gfvqdCIF.net]
- それはごもっともだが>>151の引用だから
- 161 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 00:53:58.87 ID:4G8SInJT.net]
- これは失礼。国語力も大事ですね。
- 162 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 02:34:10.88 ID:4XLa6m2a.net]
- オブジェクト思考はそもそもの設計思想からミスってるというのが持論だけど、割とハードにちかいとこでのでーたのやりとりのラップにつかえんのかなってかんじ
- 163 名前:デフォルトの名無しさん [2017/02/14(火) 07:08:37.44 ID:izwS/hYI.net]
- LispやってるとなんでCでは中括弧を閉じるとき重ねずに一つ一つ改行していくんだろうと感じる
- 164 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 07:54:13.53 ID:deUQRuVA.net]
- >>163
LISPは行エディタ時代の言語。Cは画面エディタ時代の言語。 カーソルを縦に下ろしていって、ブロックを確認するのに、 改行しておいた方が都合よかったからではないか。
- 165 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 08:15:42.74 ID:uoklH2m8.net]
- 実際に書いてみると、以下みたいなタイミングで改行を押すことになると思う
(define (fact n)[改行] (if (<= n 1)[改行]1[改行](* n (fact (sub1 n))))) そうなると自然に閉括弧の中には改行が入らなくなるんじゃないかな 特にコーディングルールなんかを意識しなくても、閉括弧が密集するはず
- 166 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 08:19:39.83 ID:uoklH2m8.net]
- Juliaってまだ次世代言語という認識も無い感じなのかな、ver1.0出ないし
それとも対象領域が狭いのか
- 167 名前:デフォルトの名無しさん [2017/02/14(火) 08:41:27.92 ID:ptdZF2Do.net]
- Juliaはすでにダメかと
放置ぎみ これは言語に特色あるというより、LLVM用のスクリプト言語って位置づけだろ? JavascriptをベースにしてLLVMを動かしてもいい。
- 168 名前:122 mailto:sage [2017/02/14(火) 08:44:44.67 ID:deUQRuVA.net]
- >>124 >>125
どう答えればよいか考え倦ねていたのですが、 Prologの場合は、基本論理式であることは確かですから、論理かなと 言われればその通りなのでしょう。 >>107の「私は帰ります」から始まるスレッドで言いたかったのは、 受け取った文そのものが、シンボルで即ち述語となるということ。 それが我々が自然言語を扱う時、自然言語に接する時の作法に近い。 そのシンボルはやがて分解されて、詳細な述語が生まれる。そしてまた それがDCG節で書いた二番目の定義、即ち、句構造への文法的な解析と ほぼ同型になる。そういう主張です。
- 169 名前:デフォルトの名無しさん [2017/02/14(火) 08:45:48.11 ID:ptdZF2Do.net]
- 開発されてた
GitHub - JuliaLang/julia: The Julia Language: A fresh approach to technical computing. https://github.com/JuliaLang/julia
- 170 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 09:38:35.37 ID:OAj0rQR0.net]
- >>168
Prolog、面白そうですね。やってみます。 FPでの自然言語処理だと、全てを読んだ訳ではない上での感想と理解いただきたいですが、 Computational Semantics with Functional Programming がFPらしい流儀で本格的なことやってるように見えました。 Draft版がpdfで読めます。
- 171 名前:デフォルトの名無しさん [2017/02/14(火) 10:03:37.62 ID:lPJlbUrB.net]
- Juliaはとりあえず永遠にStableにならなそうなふいんき()をなんとかしてくれ。
同じ事がNimやElmにも言えるが。
- 172 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 11:20:46.81 ID:QO8CQqzs.net]
- 俺数学大っ嫌い文系だけどオブジェクト指向言語より関数型言語のが好きなんだが異端なのか?
- 173 名前:デフォルトの名無しさん [2017/02/14(火) 11:33:19.82 ID:ptdZF2Do.net]
- 手続き型は関数型を一般化したようなもので、関数型は手続き型を制限したようなもの。
手続き型ができれば、注意深くやれば関数型はかけるはず。 記法は別にしてほぼ一行でプログラムするようなこと。ハンターハンターでこんなのあるが。 制約と誓約についての詳しい考察 | キルアから見たHUNTER×HUNTER 念能力における概念の一つ。 自らの念能力に対し制約と誓約を課すことによってその威力と精度を著しく向上させることが出来る。 能力者のほとんどは「制約」のほうだけを自らの念能力に取り入れているケースが多く、 純粋に制約と誓約の両方を取り入れている能力者はクラピカくらいだと言える。 クラピカ 中指の鎖に対して「旅団以外には使わない」という制約と「旅団以外に使った場合は命を絶つ」という誓約を立てた。 作中では述べられていないが、恐らく制約のみを課すよりも制約と誓約の両方を課した方が能力がより向上するものと思われる。 kirua-hunterhunter.com/seiyaku/
- 174 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 12:28:22.89 ID:PhsD9VtO.net]
- >>172
洗練ということに価値をみる人だと至極当たり前の方向だと思う。
- 175 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 12:33:23.61 ID:OAj0rQR0.net]
- >>172
物事の抽象化という点では文理関係ないのでは? 受験数学だと抽象的でない暗記的な内容もあるでしょうし。例えば積分公式の暗記とか。 微分と積分が逆だとぼんやり理解するのが大事で、 ばっちり解析解(公式)が出るかはそりゃ出れば嬉しいけど、出ない方が多い。 そういう狭い領域が○×を判定しやすいという理由で試験にでているだけなのに、 それが数学の全てで、そういうテクニカルなことが嫌いだから数学も嫌いと思っている人は多いのではないでしょうか。
- 176 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 13:05:57.35 ID:he6YB8dM.net]
- lim
ver->1.0 JULIA ver
- 177 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 15:41:28.41 ID:90/NuRRw.net]
- Haskellからは関数型言語という制約を課しながら手続き型言語になりたい
という気持ちが伝わってくるからな。 結局、多様なオブジェクツからなる手続き型言語の理想世界を関数という アトムで表すことが夢の最終目的なんだよな。
|
|