Swift part2
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2014/06/11(水) 14:42:15.02ID:+13mKJ0ZApple Developer
https://developer.apple.com/swift/
Welcome to Swift
https://developer.apple.com/library/prerelease/ios/referencelibrary/GettingStarted/LandingPage/
iBooks: The Swift Programming Language
https://itunes.apple.com/jp/book/swift-programming-language/id881256329?mt=11
書籍の形にはなってないけどドキュメント
The Swift Programming Language
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097
Using Swift with Cocoa and Objective-C
https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097
今のところbeta版のXcode 6がSwift対応らしい
https://developer.apple.com/xcode/downloads/
関連スレ
TypeScript(MS) VS Swift(Apple)
http://peace.2ch.net/test/read.cgi/tech/1401758403/
前スレ
Swiftスレ
http://peace.2ch.net/test/read.cgi/tech/1401736341/
0883デフォルトの名無しさん
2014/07/19(土) 11:17:51.88ID:Dgn7whGsだから仕事中に作ってたとしてもそれを自分のものとして発表するのを「盗み出す」とは言わないんだって
会社が仕事として作れって言ってたんじゃないんだから。
仕事中に私物を作ってたのか!バカもん!と怒られることはあっても、それは会社のものだ!泥棒!と言われる筋合いはない。
0884デフォルトの名無しさん
2014/07/19(土) 11:20:49.41ID:0s6Yl60V会社から金貰ってる以上
勤務中に違うことするのは
場合によっては業務上横領
盗みと一緒
0885デフォルトの名無しさん
2014/07/19(土) 11:27:15.14ID:R4yDQs9r契約次第ってのは嘘ではないが、一般的に労働契約は業務専念義務を伴う。
なのでまっつの行為は労働契約違反だが、使用者が大目に見てたってことだろ。
あと業務上横領ってのは大嘘。
横領という行為は「自己の占有する他人の物」についてしか成立しないので
どう構成しても横領にはならない。
0886デフォルトの名無しさん
2014/07/19(土) 11:27:21.66ID:Dgn7whGsもちろん、契約内容によってはそうだろう。
じゃないと研究職とか成り立たないからな。
でも、トヨタケーラムはそうではなかった。
でなきゃ、とっくに権利主張して裁判沙汰になってるだろ。
それで終わり。
0887デフォルトの名無しさん
2014/07/19(土) 11:31:30.79ID:ati29DcN会社から給料貰ってる就業時間内に会社のリソース使って開発したものを、
個人の所有と認めている企業なんて存在しない。
反論するなら実例あげてみろ。
就業経験の無いニートって奴は困ったもんだ。
0888デフォルトの名無しさん
2014/07/19(土) 11:32:29.35ID:ati29DcNアホ、研究職だってそうだよ。
0889デフォルトの名無しさん
2014/07/19(土) 11:35:55.07ID:Dgn7whGs横領についても、よく考えたらそうだな。
てか、 ID:ati29DcNは先に結論があって、それらしい言葉を並べ立てて無理やり論理を構築してるだけなので
何を言っても無駄
反原発と一緒
0890デフォルトの名無しさん
2014/07/19(土) 11:39:22.89ID:60ExAOfp0891デフォルトの名無しさん
2014/07/19(土) 11:46:14.53ID:ati29DcN他人のものを許可無く自分のものにすることを「盗む」と言うんだよ。
トヨタケーラムは盗まれた事、盗まれたものの価値を分からずに放置しただけ
訴えられてないからセーフとか万引き高校生か、お前は。W
0892デフォルトの名無しさん
2014/07/19(土) 11:54:38.28ID:60ExAOfp世の中にはお前の気に食わないことがいっぱいあると思うが、そこまでそれに拘るのはなんで?世直しの第一歩とか?w
焚き付けるならトヨタケーラムに裁判するように持ち込みなさいな。トヨタケーラムが無視するようだったら、お前はトンチンカン以外の何者でもない
0893デフォルトの名無しさん
2014/07/19(土) 11:57:46.33ID:0s6Yl60V0894デフォルトの名無しさん
2014/07/19(土) 12:08:07.59ID:Dgn7whGs言葉の意味もわかってない、
馬鹿馬鹿しい、単にMatz叩きたいだけ
アップル信者ってこんなのばっか
0895デフォルトの名無しさん
2014/07/19(土) 12:10:47.73ID:60ExAOfp0896デフォルトの名無しさん
2014/07/19(土) 13:30:45.40ID:0TZ3km8dマドレーヌと一緒。
0897デフォルトの名無しさん
2014/07/19(土) 13:49:31.25ID:9ljzGYTI色んな意味で滅多に無いチャンスだぞ。
0898デフォルトの名無しさん
2014/07/19(土) 14:08:45.22ID:0s6Yl60VgoのときもDartのときも同じこと言ってた香具師がいた
0899デフォルトの名無しさん
2014/07/19(土) 14:15:21.48ID:RW06H2grgoogleの1/10ルールって就業中のリソースで作るものでないの?
大企業で知識労働者を集約するとこだと、そういうの多いだろ
0900デフォルトの名無しさん
2014/07/19(土) 14:19:05.66ID:qqkZh89L滅多に無いなんてことはない
目に入ってないだけ
0901デフォルトの名無しさん
2014/07/19(土) 14:25:56.67ID:9ljzGYTISwiftのケースは、GoやDartより大きなチェンジだろ。 その衝撃は全く違う。
チャンスは色々有るが、大きなチャンスと言うのは滅多に無い。
それを捕まえられる人間は一握りかもしれ無いけど、やって見る価値は有ると思う。
0902デフォルトの名無しさん
2014/07/19(土) 14:47:12.30ID:Dgn7whGs一企業に独占された不自由な言語が普及することはまずない
Swiftも同じ末路を辿ると思う。江添亮さんも言ってる
0903デフォルトの名無しさん
2014/07/19(土) 14:51:11.83ID:eaRnxt2Eクロージャを正しく理解するのには、関数型言語の処理系を
自分で書いてみるのが一番だという意見には同意するね
ただしSECDマシンの実装というレベルでなくても、
パーズした抽象構文木(AST)を直接的に評価する
単純なインタプリタで十分だと思う
(これは >>801 の 1.5 に分類されるインタプリタの実装方式)
たとえば単純な言語処理系におけるASTを評価した値のデータ型について、
関数型言語の一つである Stanndard ML(SML) による定義を以下に示す
datatype value =
Integer of int (* 整数型の値 *)
| Boolean of bool (* 論理型の値 *)
| Primitive of prim (* '+', '-', '=' といった組み込み関数 *)
| Closure of id * AST.expr * env (* クロージャ *)
| (* 以下略 *)
ここで SML の datatype 宣言は Swift の enum に相当し、
直和型(バリアント型)のデータ型を定義する構文である(>>651)
日本語で表現すれば、「値(value)とは整数(bool)または論理値(bool)または
組み込み関数(primitive)またはクロージャ(closure)である」となる
クロージャについては、たとえば SML のラムダ式表現 fn x => x + 1 であれば
「識別子(id) x および式(expression) x + 1 および環境(environment)」と定義される
ここで x * y * z は Swift にもあるタプルのデータ型、いわゆる直積型を意味する
インタプリタ全体の設計については、以下で詳しく解説されている
・MLプログラミング入門(IV), コンピュータソフトウェア 12(4), 305-317, 1995-07-17
http://ci.nii.ac.jp/naid/110003743870
学会誌特有の硬い口調、かつ整理されていないコードで読みづらいけど、参考になる
他にも関数型言語 OCaml による Ruby サブセット実装なんてのもある
・RubyのインタープリタをOCamlで実装してみた。 - yoshihiro503の関数的日記
http://ocaml-nagoya.g.hatena.ne.jp/yoshihiro503/20090429
0904デフォルトの名無しさん
2014/07/19(土) 15:18:57.00ID:YZuWtgiMえぞえってSwiftの記事で爆死してたけど、何の釈明もないよね。
0905デフォルトの名無しさん
2014/07/19(土) 15:21:03.98ID:PYFMBFkf数人がせこせこやってたプロジェクトに社全体の未来を託していいのだろうか
最終的なGOサインを出したのはフェデリギ?
0906デフォルトの名無しさん
2014/07/19(土) 15:25:27.28ID:I1ObDJCO数人ってもメインがラトナーなわけで。
今は数も増えてるだろうし
つかLLVM/Clangにも同じこと言えるんじゃね?まあ、こっちは使う側はあまり意識しないでいいけど
0907デフォルトの名無しさん
2014/07/19(土) 15:35:46.93ID:eaRnxt2Eまず、このスレにで対象とする話題は「関数型言語」ではなくて
「関数型プログラミング」というプログラミング・スタイルであり、
しかも Swift と関連したネタにしておいたほうがいいと思う
で、関数型プログラミングというスタイルであれば、>>868で書いたように
C# の LINQ や JavaScript の jQuery といったライブラリやフレームワークが
多くの業務プログラマの間で、すでに活用されている
今さら jQuery を放棄して、以前の DOM をゴリゴリ書き換えていく生活へ
返りたいと希望する JavaScript プログラマは皆無だろう
もちろん Ruby であれば、標準ライブラリはもちろんのこと、
業務アプリ開発にも採用される Rails では当たり前のように活用されている
たとえば最近の Rails では、(LINQ から影響を受け) SQL のクエリ文を
メソッド・チェーンを使って組立てるのが一般的スタイルになっている
これまで(手続き型言語である C をベースにした)Objective-C のプログラマにとって、
こうした関数型プログラミングは縁遠かった
これが新言語 Swif の登場によって、世間ではすでに常識化している
モダンなスタイルを使えるようになる、ってことだね
(Swift を含む)関数型ではない言語における関数型プログラミングの利点については、
以下の記事が参考になると思う(Ruby の記事だけど、他の言語にも当てはまる)
・Rubyによる関数型プログラミング
http://www.h6.dion.ne.jp/~machan/misc/FPwithRuby.html
0908デフォルトの名無しさん
2014/07/19(土) 15:35:54.32ID:RW06H2gr古典AIでも勉強しなおす方がマシ
0909デフォルトの名無しさん
2014/07/19(土) 16:06:30.52ID:b+p9VEiT会社全体の未来を託すような基盤技術の立ち上げは凄く優秀な少人数に任せるに限るよ
最初から凡人を大量に投入したりしたら目も当てられないようなものができあがる
0910デフォルトの名無しさん
2014/07/19(土) 16:54:45.57ID:T59/5GeDClosure = gcc拡張の関数内関数
Closure != C++の関数内classの静的関数
因みにBorlandのC++だとこんなClosureがあった。
Example example;
int (__closure *function)(int) = &example::Something;
今のC#で言うdelegateだけど、これもClosure。
Closure != 無名関数
で有る点は意識したほうが良いと思う。
0911デフォルトの名無しさん
2014/07/19(土) 17:14:00.06ID:T59/5GeDあれは関数型プログラミングとは言えないと思う。
単なるSmalltalkへの回帰じゃん。
( 1 to: 10 ) select: [ :each | 5 < each ].
これと同じ。
関数型って言うなら
numberFor := [ :value | [ value value. ] ].
zero := numberFor value: 0 asValue.
one := numberFor value: 1 asValue.
two := numberFor value: 2 asValue.
array := [ :index | ( { zero. one. two} at: index value ) ].
array value: zero.
array value: one.
array value: two.
こんな感じで配列だろうが値だろうが全部関数として扱えなきゃ、
関数型Programingと言えないだろ。
0912デフォルトの名無しさん
2014/07/19(土) 17:21:22.88ID:lyDv2rWUラトナーってそんな凄いのか
0913デフォルトの名無しさん
2014/07/19(土) 17:26:17.41ID:T59/5GeDa := 1 asValue.
b := [ 1 ].
c := a value = c value.
最初からこんな風に値を関数化する仕組みを備えてる。
0914デフォルトの名無しさん
2014/07/19(土) 17:28:15.02ID:T59/5GeD?
c := a value = c value.
○
c := a value = b value.
0915デフォルトの名無しさん
2014/07/19(土) 17:42:09.74ID:dnFFlfmEそれよりCocoaとかのフレームワーク群に慣れ親しむほうがずっと重要だわさ
どんなプラットフォームでも言えることだけど
0916デフォルトの名無しさん
2014/07/19(土) 17:49:53.87ID:Dgn7whGsLLVMの理論つくった奴だぞ
21世紀のデニス・リッチー、または21世紀のリーナス・トーパルズって呼ばれてる
なんでアップルみたいな邪悪な企業に雇われて、Swiftなんて不自由言語作ってるのかわからん
フリーソフトウェア運動に加わればコンピュータ黎明史に未来永劫名を刻めるだろうに
0917デフォルトの名無しさん
2014/07/19(土) 17:58:21.93ID:6ZRdCiPyzipを開発したカッツの様に酒に溺れて死ぬ惨めな人生は歩みたくないだろ。
0918デフォルトの名無しさん
2014/07/19(土) 18:01:48.17ID:1hzYIwWVそれは自業自得じゃね?
ま、名前が売れるのはプログラマ冥利に尽きるよ。Appleなら飯には困らんだろうし
0919デフォルトの名無しさん
2014/07/19(土) 18:03:21.23ID:fcBWg80NLLVMで効率的に動く言語としてSwift作った訳だが。
0920デフォルトの名無しさん
2014/07/19(土) 18:05:02.39ID:7rL7EX6a0921デフォルトの名無しさん
2014/07/19(土) 18:29:29.01ID:vMQWEed1C#はMono実装がUnityとかで使われてるんじゃない? よく知らんけど
0922デフォルトの名無しさん
2014/07/19(土) 18:32:06.45ID:60ExAOfpID:Dgn7whGsはどこまでネタで書いているのかわからんけどな。マジだったらヤバすぎw
0923デフォルトの名無しさん
2014/07/19(土) 18:33:14.05ID:qyAKsTm0それはいくらなんでも過大評価じゃ...
0924デフォルトの名無しさん
2014/07/19(土) 18:54:33.09ID:d+Cj230E0925デフォルトの名無しさん
2014/07/19(土) 18:57:09.32ID:OcOureUr21世紀のリーナスとは初耳だが、LLVM功績はそれぐらい称えられてもいいと思うけどな。
iOSもAndroidもLLVMを採用しているし、その内LinuxもLLVM/Clangでコンパイルされるかもしれない
0926デフォルトの名無しさん
2014/07/19(土) 19:02:58.36ID:y0FLl86NJavaはAndroidとかいう海賊版が流行る前から圧倒的トップシェアだよ
まあJavaはIBMもいるけど、ライセンス方式なので昔から完全に一企業独占なのは変わりない
0927デフォルトの名無しさん
2014/07/19(土) 19:06:45.57ID:d+Cj230E彗星のごとく現われたLLVMさん
0928デフォルトの名無しさん
2014/07/19(土) 20:13:47.48ID:71/bQDSL0929デフォルトの名無しさん
2014/07/19(土) 20:14:49.24ID:9ljzGYTIやっとgccの束縛から解放される。
Visual StudioでもLLVMは動いてる。
0930デフォルトの名無しさん
2014/07/19(土) 20:23:43.59ID:0TZ3km8dなんかリーナスが21世紀に終わってるみたいに聞こえるだろw
0931デフォルトの名無しさん
2014/07/19(土) 20:29:05.99ID:eaRnxt2Eまず「あれは ...」「これと ...」「こんな ....」といった代名詞だらけで、
主張したい事を自分自身の言葉で表現できていない
何度か議論していれば何を指しているのかを推測するけど、
単発カキコ他人には意味不明な文章になっている
書き直したほうがいいと思われる
とりあえず、2点を指摘しておく
まず Smalltalk の歴史を知らないみたいだから説明しておくと、
Smalltalk は関数型言語 LOGO をベースにシミュレーション言語 Simula の
影響を受けて誕生したオブジェクト指向言語の始祖である
LOGO をベースとしているのだから、Smalltalk が関数型プログラミングに
適しているのは、ごく自然な結論である
従って、もし回帰と呼ぶのなら Smalltalk のベースになった LOGO への回帰とすべきだろう
(なおクロージャという概念を Smalltalk ではブロックと呼んでいる)
次に「関数型」と「オブジェクト指向」をごっちゃに理解していると思われる
Smalltalk は純粋オブジェクト指向言語だから、配列だろうが単純値だろうが、
そしてメソッドであろうとも、全部オブジェクトとして扱える
それに対して関数型言語では、関数はオブジェクトとして(=第一級市民として)扱えるけれど、
(その逆に)関数以外のオブジェクトは関数として扱うことはできない
つまり関数型言語では、関数オブジェクトだけに適用(apply)を許すという特別な扱いをする
この違いを理解していないから、「関数型Programing」とやらの定義も間違えていると思われる
0932931
2014/07/19(土) 20:34:12.19ID:eaRnxt2EX: 単発カキコ他人には意味不明な文章になっている
O: 単発カキコでは、とうてい他人には意味不明な文章になっている
0933デフォルトの名無しさん
2014/07/19(土) 20:35:51.54ID:emSpeoNV0934デフォルトの名無しさん
2014/07/19(土) 20:36:12.25ID:0s6Yl60Vezoeもタマにはいいこと言うじゃん
0935デフォルトの名無しさん
2014/07/19(土) 21:33:38.09ID:h1yXqgt1LOGOは違わね?
print apply [[x] :x + :x ][7]
上記の様にLOGOはBlockを評価するにはapplyが必要で、
関数と互換性が全然ない。
関数とBlockの扱いが別でいいと言うなら
C++やJavascriptのように関数と無名高階関数を
同様に扱える言語は当てはまらないじゃん。
関数型Programingの方は言語機能というより、lambda計算の方を示したつもりだよ。
http://ja.wikipedia.org/w/index.php?title=%E3%83%A9%E3%83%A0%E3%83%80%E8%A8%88%E7%AE%97
0936デフォルトの名無しさん
2014/07/19(土) 21:37:51.62ID:9ljzGYTI他の言語はどうでも良い。
0937デフォルトの名無しさん
2014/07/19(土) 22:01:40.35ID:emSpeoNV0938デフォルトの名無しさん
2014/07/19(土) 22:27:03.18ID:0W2JdBO/火曜には出るかなー
0939デフォルトの名無しさん
2014/07/20(日) 08:24:32.80ID:+HQAUTTc関数型のエッセンス取り入れるなんて今時あたりまえすぎて
殊更に言うことでもないだろう
0940デフォルトの名無しさん
2014/07/20(日) 09:43:03.17ID:b2ADfW780941デフォルトの名無しさん
2014/07/20(日) 11:03:25.26ID:QhoAtEXmむしろメジャーな言語でヘッダがあるのCとC++とObj-Cだけですし...
0942デフォルトの名無しさん
2014/07/20(日) 11:14:02.69ID:b1uNa6xYヘッダの代わりに
0943デフォルトの名無しさん
2014/07/20(日) 13:41:45.35ID:ra/3lMl10944デフォルトの名無しさん
2014/07/20(日) 14:04:30.84ID:7Fl+zG/o大抵のコンパイル言語にはライブラリを先にコンパイルしといて
あとでそれをリンクする仕組みがあるよね?
0945デフォルトの名無しさん
2014/07/20(日) 14:17:44.10ID:NF3FNXdaプリプロセッサを無くしたSwiftに無いのは当然。
0946デフォルトの名無しさん
2014/07/20(日) 14:27:34.21ID:2j39JLYEじゃあプリプロセッサマクロは使えなくなったの?
0947デフォルトの名無しさん
2014/07/20(日) 15:06:08.48ID:wVC56iFt0948デフォルトの名無しさん
2014/07/20(日) 15:23:32.02ID:NF3FNXdaここにSimple Macro とComplex Macro , Condition compileについてのSwiftでの記述が有る。
https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/buildingcocoaapps/InteractingWithCAPIs.html#//apple_ref/doc/uid/TP40014216-CH8-XID_20
Simple Macros
#define FADE_ANIMATION_DURATION 0.35
は、global Constantを使いなさい。
let FADE_ANIMATION_DURATION = 0.35
何故ならCやObjCで書かれたSimple Macro様の物は、global variable としてSwiftに読み込まれるから。
Complex Macros
対応する物はSwiftには無い。 代わりにジェネリックとfunctionで似た様なことが出来る。
だから、CやObjCで書かれたComplex Macro はSwiftで利用することは出来無い。
Build Configurations
Swiftはbuild configurations の評価に従ってコンパイルされる。
true false の値とcommand line flag, プラットフォームテストfunction を使う。
-D <#flags#>
#if build configuration
statements
#else
statements
#endif
0949デフォルトの名無しさん
2014/07/20(日) 16:08:02.27ID:XG+cug7clet context:CGContext! = reinterpretCast(NSGraphicsContext.currentContext().graphicsPort())
0950デフォルトの名無しさん
2014/07/22(火) 02:37:57.89ID:SMQ/MZMxOS X 10.10 Yosemite preview 4
iOS 8 beta 4
出ました
0951デフォルトの名無しさん
2014/07/22(火) 10:07:40.31ID:brrWCVo/これどういう事? > UInt in !user code
0952デフォルトの名無しさん
2014/07/22(火) 10:53:18.12ID:m0OGWg9nvar i: UInt16 = UInt16.max
++i
最適化無し(-Onone)でも実行時エラーが出るように修正されましたね
0953デフォルトの名無しさん
2014/07/22(火) 10:53:39.33ID:pTtZ8nRg0954デフォルトの名無しさん
2014/07/22(火) 11:02:19.27ID:m0OGWg9n縁の下(framework)では Int って事にするけど、ユーザーが書くコード側では UInt
だからどこか深い部分に関わらない限りは気にしなくていいよって事かと
0955デフォルトの名無しさん
2014/07/22(火) 11:16:20.14ID:m0OGWg9nstride(from: 0, through: 10, by: 3) と書けるようにしたから
(0..<10).by(3) みたいには書けないよ。もうそんなmethod無いからwって・・・
別に残してくれても良かったと思うけどなあ
0956デフォルトの名無しさん
2014/07/22(火) 12:04:37.22ID:brrWCVo/せめて stride ( 0..<10 , by: 3 ) としてほしかった。
0957デフォルトの名無しさん
2014/07/22(火) 12:26:15.46ID:pTtZ8nRg鎮まりたまえ〜
0958デフォルトの名無しさん
2014/07/22(火) 12:37:09.40ID:kVgxKTl30959デフォルトの名無しさん
2014/07/22(火) 19:47:40.52ID:3XIByciF0960デフォルトの名無しさん
2014/07/22(火) 22:28:32.25ID:OS8Ua5qm一切副作用を使わずfor文のi++もなくし配列もなくして
単連結リストと末尾再帰で表現するのが関数型
そこを見ないと本質が見えなくなる
0961デフォルトの名無しさん
2014/07/22(火) 22:34:54.53ID:nSYxmQ2R別に関数モデル使うのが目的じゃなくて本来の目的は宣言型プログラミングなんだから、
それを損なうような再帰の乱用は考えもの
0962デフォルトの名無しさん
2014/07/22(火) 23:07:47.19ID:Xdd3r5lq0963デフォルトの名無しさん
2014/07/22(火) 23:14:53.12ID:vNYu1ctv> 関数型のスタイルっていうのは全部再帰で書くことだろ
それは間違いじゃないけれど、正しくもない
ちょうど関数型言語アンチスレに、同じ様な初心者からの
質問が過去にあったから、それを紹介しとく
> 413 :デフォルトの名無しさん:2013/06/20(木) 19:42:10.61
> 関数型言語ってループは末尾再帰で書くんですよね?
・【アンチ】関数型言語は使えない【玩具】 2
http://peace.2ch.net/test/read.cgi/tech/1330429547/413-418
Swift と同じく関数型言語ではない Ruby のケースも例に含まれているから、
「Swift における関数型プログラミング」にも参考になると思う
0964デフォルトの名無しさん
2014/07/22(火) 23:26:48.85ID:OS8Ua5qmラムダ式という便利なコールバックを加えただけのことで
関数型でもなんでもない運用をするのが
オブジェクト指向と関数型のハイブリッド言語と言われるものの特徴だと思うよ
これを関数型に分類しようとすると本質を見失うだけ
0965デフォルトの名無しさん
2014/07/22(火) 23:39:02.75ID:pTtZ8nRg関数型の本質を語りたいならこのスレじゃない
0966デフォルトの名無しさん
2014/07/22(火) 23:39:39.31ID:vNYu1ctvたしかに >>960 の「単連結リストと末尾再帰で表現する」のは、
関数型言語の背景にある抽象的な理論(ラムダ計算モデル)にとって本質だよね
ところで、ここは「関数型言語ではない Swift」のスレなわけだけど、
その本質とやらを見失うと「Swift における関数型プログラミング」にとって、
どんな具体的な悪影響があるんだろう?
とりあえず >>907 の末尾で紹介したネット記事から、以下の一節を引用しとくね
それでは、このガイドでは「理論的な関数型の純粋性を信奉する
風変わりなスタイルを布教するつもりがない」ことを明らかにしていこう。
逆に、私の試みのポイントは、 コードの品質を向上させたいときは
いつでも関数型プログラミングを使用すべきであるけれど、
それ以外のときには(関数型プログラミングは)まさに誤った解決手段である、
というものである。
もしも関数型言語のウンチクを語りたいだけなら、スレ違いだから
関数型言語スレへ移動して、そこで大いに議論すればいいと思う
0967デフォルトの名無しさん
2014/07/22(火) 23:44:46.27ID:OS8Ua5qm誤解を招くだけというかただの詭弁じゃない
0968デフォルトの名無しさん
2014/07/22(火) 23:50:30.53ID:pTtZ8nRgこれ以上スレ違い続けるなよ
0969デフォルトの名無しさん
2014/07/22(火) 23:53:30.16ID:RYGlxIg7>関数型でもなんでもない運用をするのが
それは違わね?
手続き型のプログラミングをしてる人でも、あまり意識することなく関数型の恩恵に与られるのがSwiftみたいな言語の特徴だと思うけどな。
1番分かりやすいのがコレクション操作、集計処理だろう。(map,filterとか)
本質って大多数にはどうでもいいわけ。オブジェクト思考も同じ。
0970デフォルトの名無しさん
2014/07/22(火) 23:56:36.29ID:OS8Ua5qmコレクションに対して高階関数を渡して処理するのはオブジェクト指向で普通にやってること
仮想関数の実装方法がラムダに変わっただけなものを関数型なんて言い出すから馬鹿にされる
ちょっとベターにしただけのただのオブジェクト指向だよ
0971デフォルトの名無しさん
2014/07/23(水) 00:05:20.67ID:UkE72Sh4理解できるのはこの世で僕だけだ!
こうですか
0972デフォルトの名無しさん
2014/07/23(水) 00:05:41.49ID:gU9I4UPnちょっと頭冷やした方がよくね?
高階関数を渡して処理するOOPはあるが、高階関数を渡して処理するからOOPではないだろ?
それは関数型の考え方に対応したOOPってだけだよ。
OOPの定義は全く別物だよ。
あと、純粋関数型も(非純粋)関数型も変わんないってことは、非純粋関数型のSwiftも関数型って認めてるじゃん。自己矛盾してるね
0973デフォルトの名無しさん
2014/07/23(水) 00:12:33.82ID:gU9I4UPnpublic,internal,privateかあ
protectedはないんだね
0974デフォルトの名無しさん
2014/07/23(水) 00:12:52.90ID:S/T3pfYX純粋って書いてない関数型言語でも
基本的にループはしないで再帰で書くし配列より単連結リストを使うってことだよ
0975デフォルトの名無しさん
2014/07/23(水) 00:15:19.44ID:gU9I4UPnその前提がおかしいだろ
純粋関数型でなければ、どちらで書くかはプログラマが決めるんだよ。そうでなければ、非純粋の意味がないでしょ
0976デフォルトの名無しさん
2014/07/23(水) 00:16:01.35ID:phognMRi0977デフォルトの名無しさん
2014/07/23(水) 00:16:27.75ID:gU9I4UPninternalはターゲット内。
0978デフォルトの名無しさん
2014/07/23(水) 00:20:25.53ID:S/T3pfYX別に純粋関数型だって手続き型みたいに書くこともできるし
手続き型言語だって関数型のスタイルで書くことも出来る
言語の標準スタイルが関数型なのかどうかが問題なのであって
Swiftのスタイルは関数型ではないというだけの話
0979デフォルトの名無しさん
2014/07/23(水) 00:42:10.76ID:gU9I4UPnなんか勘違いしてるようだが、俺の発言は>>960への反論だからな?
Swiftのメインの考え方が関数型と言っているわけではなく、関数型のスタイルも取り入れているよと主張しているだけだ。
0980デフォルトの名無しさん
2014/07/23(水) 00:57:36.64ID:S/T3pfYX全然関数型じゃないって話だよ
関数型のスタイルは>>960
コレクションに高階関数を入れて処理するなんてのは関数型でもなんでもないわけ
たとえばRubyのmapに!をつけて中身変更したら関数型じゃなくなって!つけなければ関数型なのか? ってこと
どっちも別に関数型とは関係ないただの便利なコレクションライブラリでしかない
0981デフォルトの名無しさん
2014/07/23(水) 01:17:36.24ID:UT9I22cv杓子定規なやつだなー
そのただの便利なコレクションライブラリは関数型の考えなしで成り立つのかね?
0982デフォルトの名無しさん
2014/07/23(水) 07:05:28.23ID:Pu3k1ugl元祖OOの考え方だろうな。
レス数が950を超えています。1000を超えると書き込みができなくなります。