関数型プログラミング言語Haskell Part31©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/09/27(水) 02:33:08.70ID:2XAqPuH2
関数型プログラミング言語 Haskell について語るスレです。

haskell.org (公式サイト)
https://www.haskell.org/

前スレ
関数型プログラミング言語Haskell Part30
http://mevius.2ch.net/test/read.cgi/tech/1484491434/
2018/07/06(金) 07:12:51.82ID:hZ+CPQ2X
もし定義できないならできないと伝えるのが正しい言葉なんです
2018/07/06(金) 07:46:50.10ID:vkH0MZEq
ユーザーは最初から見た目を重視してんのに、ここにきていきなりオシャレは必要ないって突っ返すのは、
さすがにPythonがどうとかHaskellがどう以前にコミュニケーション不全
2018/07/06(金) 08:37:44.78ID:ODtONBJi
万能なプリセットなんておれは期待してないから、
適当なのを真似るだけで全然問題ないよ
ただ別に金出してるわけでもないから、おれは好き勝手書いてるけど別に従う必要はないよ

あとちょっとグラフに対するおれの感覚と違っているようだから書いておく

少なくとも今は、一種類のデータだけじゃなく、沢山の種類のデータを見たい人がいるんだよ。
そういう人にとっては、情報は圧縮されていて欲しい。忙しいから、全体を見たいんだ。
例えば一台の使用メモリ量じゃなく50台のを見たい、とかだよ。
そんな時に、50枚のグラフを渡されて一個一個が完璧に可視化しているでしょ、とか言われたら困る。

画面に収まるようにするには、削ってもいい情報を削り、例えばfacetみたいな方法でまとめるしかない。
かといって圧縮しすぎても分からなくなるし難しいけどね。
2018/07/06(金) 10:10:20.21ID:nHf3/Uiq
>>641
> 画面に収まるようにするには、削ってもいい情報を削り、例えばfacetみたいな方法でまとめるしかない。
> かといって圧縮しすぎても分からなくなるし難しいけどね。

私は「全体像」を捉えるための可視化と言っています。
細部を見るための可視化とは言っていません。
(50個分のグラフで表されるデータの全体像を捕らえたいという要望に、
50枚のグラフを作るなど愚の骨頂)

そして、それはあなたがオシャレではないと感じている gnuplot でできますよね。
gnuplot のサンプル見ましたか?

gnuplot でもできることは理解したけど、
オシャレではないので却下という事ですか?
2018/07/06(金) 11:23:26.70
長い棒グラフを端折る為に、下端を0以外の数値にしちゃうとか、マナー違反しない限りもう好きにやってくれ
2018/07/06(金) 11:46:42.42ID:aeaUac9w
オシャレって結局UXだからね
手軽に良いUXが得られる方を使うのは自然っちゃ自然なわけで
2018/07/06(金) 14:15:19.37ID:hZ+CPQ2X
UXを定義できないなら予測もできない
予測できると思ってるならやっぱり定義するべき
2018/07/06(金) 18:44:45.57ID:aeaUac9w
UX自体の定義は単純だよね
プロダクトによってユーザーが得る経験
良し悪しになると一意には定まらないけど良い悪いのアンケでも取って統計的有意差を得られれば良い悪いとしていいと思う

もし客観主義として定義可能なものしか定義と認めないと言うならお手上げだ
良いUXが得られるとされるプロセスには既にアンケなどによるユーザ要求の明確化が含まれてしまうからね
2018/07/07(土) 09:26:18.48ID:IVdrrdB1
アンケ取って結果を発表するところまで全部がUXになるからお手上げだな
放○線を測定して数値を報道するみたいなUXだ
2018/07/07(土) 11:29:34.03ID:o7Nl1O6h
出来ない出来ないと言い訳ばかりして実際出来ているPythonから目をそらす
2018/07/07(土) 11:58:08.73ID:IVdrrdB1
プロシュー○「出来る…そんな言葉は使う必要がねーんだ。」
2018/07/07(土) 12:00:36.05
たかがグラフ一つでいつまでもスレを汚さないで
もっと本格的な話をして
2018/07/07(土) 21:46:46.78ID:amcAQv9O
質問

let a = takeWhile p $ sort xs
これって、どこまでソート処理されるかは、
xs の並び方と条件 p によるよね
(厳密にはaの評価方法によるけど)

今のsortの実装は確かマージソートだったはずだから、
極端な話、条件に合う要素がただ一つだけ先頭にあれば、
ソート処理はすぐに終わると思っていい?
2018/07/07(土) 23:14:16.03ID:CxD5piUN
>>651
そういう意図なら
sort $ takeWhile p xs
じゃないかな
最初に書いてある式だと、takeWhile p が引数のリストを評価しようとしたときに
sort xsの第一要素を見る必要があるのでxsをソートし終わらないと評価が進まないはず
2018/07/08(日) 00:09:13.07ID:Xnl3te8c
マージソートでマージが遅延されるならhead $ sort xsはO(n)だと思う
いい感じの説明用コードが思いつかないけど
あとたぶん例のクイックソートも
2018/07/08(日) 00:15:59.84ID:Xnl3te8c
あークイックソートは先頭だけでも最悪O(n^2)になったりするか
2018/07/08(日) 01:32:29.33ID:fmVgo5Ue
>>652
オレ >>651

つまりはn要素のリストのsort後の先頭m要素 (m<n) を評価するのは、
n要素を評価するより少ない計算量で済むんじゃないか、という質問なんだ

だから sort と takeWhile を入れ替えたら意味ない
2018/07/08(日) 01:40:40.69ID:fmVgo5Ue
ふと思いついたが、比較関数に unsafePerformIO を入れて比較回数をカウントすれば分かるかも

今は実験環境が無いから、起きたら試してみる
お騒がせしてごめん、という結果になるかも

お休み、お前ら
2018/07/08(日) 09:12:56.04ID:fmVgo5Ue
実験したら、やっぱり評価に必要な部分しかソートされなかったよ
実験は takeWhile じゃなく take でやった

[実験コード]
ucomp :: IORef Int -> Int -> Int -> Ordering
ucomp ref x y = unsafePerformIO $ do
modifyIORef ref (+1)
return $ compare x y

main = do
let g = mkStdGen 1
let xs = shuffle' [1..8] 8 g
rc <- newIORef 0
let ys = take 8 $ sortBy (ucomp rc) xs
putStrLn $ show $ maximum ys
c <- readIORef rc
putStrLn $ show c

take で取り出す要素数を8個と3個で実験し、show c の結果を比較
  8個 c=19
3個 c=14

やっぱ遅延評価ってイイね
ベスト3を決めるのに他言語みたいに全部を評価する必要がない

ちなみに、100万個の要素でもやってみた
  all c=19237801
  3個 c=1413225

質問したけど、ひとりで納得してしまった、すまん
2018/07/08(日) 09:49:58.54ID:ZNji3Zip
>>657
>ベスト3を決めるのに他言語みたいに全部を評価する必要がない
別に他言語でも全部を評価する必要はない。
https://ja.wikipedia.org/wiki/%E9%81%B8%E6%8A%9E%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0
2018/07/08(日) 10:45:22.88ID:JJmFxw3L
どんな言語だろうが全部ソートすれば O(n*log(n)) で最小値や最大値を探すのは O(n)

この n と n*log(n) の差を無視できないなら
そもそも n と 100*n の差を無視するのもダメじゃないかと思う
2018/07/08(日) 11:20:47.41ID:fmVgo5Ue
>>658
いや、そうじゃなくてさ

上位m個の選択処理とソート処理とをソース上ではきっちり分けてるじゃん
ソースを読む人間にとってはすげー読みやすいわけよ

なのに内部処理的には2つが連携して、
必要なところまでしかソートされないだろ
選択処理のためにワザワザ特殊なソート処理をしなくてもさ

そこがすげーって感動してるんだよ
2018/07/08(日) 11:30:44.71ID:Xnl3te8c
まあソートなんて如何にもキャッシュ次第なアルゴリズムで
連結リストと遅延評価のO(N)が配列と正格評価のO(NlogN)に
現実的なNの範囲で勝てるのかものかどうか・・・
662デフォルトの名無しさん
垢版 |
2018/07/08(日) 13:00:05.06ID:MJ8iSrG7
まるで永久機関の話を見ているようだ
2018/07/08(日) 22:57:14.98ID:wt6yCeB5
具体例や比喩で抽象度を下げるのは良い
だが「永久機関っぽいもの」の集合を作ったらむしろ抽象度が上がり収拾がつかなくなる
2018/07/09(月) 10:04:31.05ID:pOD9hGUD
arrayパッケージのData.Array.(!)はO(1)ですか。
665デフォルトの名無しさん
垢版 |
2018/07/11(水) 00:08:42.37ID:l1CMhfek
Haskellの採用とユーザ満足度が向上
https://www.infoq.com/jp/news/2018/07/haskell-user-survey-2018
666デフォルトの名無しさん
垢版 |
2018/07/13(金) 00:35:06.69ID:vrIUPTb8
発展編! Haskellで「型」のポテンシャルを最大限に引き出すには?【第二言語としてのHaskell】
https://employment.en-japan.com/engineerhub/entry/2017/10/03/110000
2018/07/14(土) 09:44:23.46ID:sMbeASmt
yampaムズ過ぎ

初心者用のシンプルで教育的なチュートリアルって無いの?
英語でもいいから教えて
2018/07/15(日) 00:11:52.51ID:89Btz4it
>>677
Yampaエアプだが、このサイトが良さそうだ
http://bitterharvest.hatenablog.com/archive/category/Haskellプログラミング講座(上級編:ゲーム)
2018/07/15(日) 05:50:15.76ID:uHtx5/Ti
>>668
申し訳ない

そこは、FRPの基礎概念である「ビヘイビアとイベント」と、
Yampaの基礎概念である「シグナル関数」との繋がりが言葉で説明されていないんだ

コードを書きまくって慣れろ、って感じ
2018/07/15(日) 08:13:24.43ID:89Btz4it
>>669
フーム
ビヘイビアは Time → a でイベントは [ (Time, a) ]
シグナル関数は (Time → a) → (Time → b)
のようなことが 「FRPの話 - maoeのブログ」で少しだけ説明されているね。

もう少し長い解説をElm開発者の人が論文に書いてた。
http://elm-lang.cn/assets/papers/concurrent-frp.pdf
2018/07/15(日) 08:23:05.35ID:89Btz4it
>>665 ほらね、Haskell普及のためにはツールの拡充が必要なんだよ。
https://github.com/alanz/vscode-hie-server/pull/83
これこれこういうのを待ってた。emacs対応はよ
2018/07/15(日) 09:30:20.96ID:uHtx5/Ti
>>670
ありがとう
両方読んでみる
2018/07/27(金) 11:27:32.40ID:qBTTu3Zk
importのhidingとかqualifiedとか適当にやってるせいで、いつも収拾がつかなくなってる。

ブラックリストかホワイトリストか、asで名前付けるのはどんな時か。みんなどうしてるの?
2018/07/27(金) 21:52:57.03ID:lmpcLfYu
>>673
私も知りたいな。

私の場合は、頻繁に使うもの以外は、
qualified as してる。

そして、asでつける名前にいつも悩む。
675デフォルトの名無しさん
垢版 |
2018/07/29(日) 20:22:22.75ID:tC3jGbCj
インポートリストをざっと見ることで、モジュールの役目が何となく掴めて嬉しい。たとえば
import Data.Text.Lazy
import Text.Parsec
だったら、ああなんかをパーズするんだな、と分かる。

一方、
import Math (sin,cos,tan)
みたいになっていても、このモジュールは三角関数を使うやつ、ということは判るが、それが大して役に立つとは思えない。

だから値の明示的インポートはやめて、hidingだけに統一しようかな、と考えてる。
値がバッティングして、かつ両方使いたいならそのモジュールは qualified する。
2018/07/29(日) 20:25:02.63ID:tC3jGbCj
>>674
基本大文字を拾って as している。
import qualified Data.Map as M
import qualified Data.Set as S
だが
import qualified Text.Regex.TDFA as TDFA
つらい
2018/07/31(火) 21:58:40.13ID:6DhCQI2V
https://github.com/trekhleb/javascript-algorithms/issues/119

岡部健、更新。
2018/08/11(土) 12:54:39.21ID:dGCQYNDS
get programming with haskell 読み終わった。
2018/08/12(日) 03:22:15.33ID:fh95vopi
>>678
感想は?
2018/08/12(日) 09:41:11.96ID:mCQrOvpG
>>678
凄いハスケルより初心者向きで実用的でわかりやすい。
2018/08/12(日) 11:23:29.51ID:1lJIW3H3
>>680
実用的というのは?
何かアプリケーションを作るの?
2018/08/12(日) 11:30:59.98ID:mCQrOvpG
>>681
アプリケーションは作らないけれどコマンドラインのプログラムは作る。
2018/08/12(日) 17:25:24.07ID:1lJIW3H3
もしかしてFRPとマルチスレッドって相性悪い?
2018/08/12(日) 18:12:55.83ID:HMPSYWub
新分子設計は並列処理を酷使するだろうが
強化プラスチックが特別どうということはないだろう
2018/08/12(日) 18:50:22.57ID:RPd+D2gX
>>684
FRPの有限要素解析?
2018/08/12(日) 19:11:53.89ID:OVUWpXpl
>>26
2018/08/13(月) 06:20:04.15ID:HYnqBmQs
いいねえ。気軽に使えるからコマンドラインは好き。
自分で使うツールを作るのが一番モチベ上がるね
2018/08/13(月) 14:03:54.60ID:DTF7R3qv
Get Programming with Haskellはタイトルのとおり初心者向けの本だよ
600ページの本で400ページ超えたところでstack導入して、
あとは、簡単なコマンドラインツール、http、JSON、dbおさわりくらい
それまでは、ghci使ってhaskellの学習
689デフォルトの名無しさん
垢版 |
2018/08/26(日) 22:17:17.61ID:hKYk5Tea
Haskell開発ワークフロー。お前らはどれ?
1. stackの--file-watch
2. ghciの:r
3. ghcid
4. エディタのフック
https://www.fpcomplete.com/blog/2018/08/haskell-development-workflows-4-ways
2018/08/27(月) 22:15:37.17ID:8S3lymML
今やすいぞ 多分半額程度

ソフトウェアシステムアーキテクチャ構築の原理 第2版
https://www.amazon.co.jp/ソフトウェアシステムアーキテクチャ構築の原理-第2版-ニック-ロザンスキ-ebook/dp/B00ZF44J0I/ref=tmm_kin_title_0?_encoding=UTF8&qid=1535375513&sr=1-1
2018/08/29(水) 13:20:47.63ID:nTrDfIjn
>>689
俺は2
692デフォルトの名無しさん
垢版 |
2018/09/04(火) 09:34:44.70ID:0nZVvdsT
カリー化された関数の表記がよく分かりません。

add' :: Int -> (Int -> Int)
add' x y = x + y

↑これはどうやって解釈すればいいのでしょうか?
add' は関数を返す関数であるにもかかわらず、 = x + y となっているので数を返す関数のように見えます。

↓このλ式を使った表記は何の問題もないと思います。

add = \x -> (\y -> x + y)
693デフォルトの名無しさん
垢版 |
2018/09/04(火) 09:40:03.69ID:0nZVvdsT
add x = \y -> x + y

これでも問題ないと思います。
2018/09/04(火) 10:34:46.73ID:ntR3woJY
Int -> (Int -> Int) も
Int -> Int -> Int も同じやろ

add 1 2 としたらIntになるし
add 1 としたらInt -> Intの関数が得られる
それだけ

更に引数3つとるaddなら
add = \x -> (\y -> (\z -> x + y + z))
と同じ意味だし、haskellはデフォでそういう仕組になってるってことやろ
695デフォルトの名無しさん
垢版 |
2018/09/04(火) 10:40:17.26ID:0nZVvdsT
>>694

ありがとうございます。

add' :: Int -> (Int -> Int)
add' x y = x + y

↑この表記って、よくない表記じゃないですか?

add' x y = x + y

↑これをみて、型が add' :: Int -> (Int -> Int) だとはとても分かりません。
2018/09/04(火) 10:48:31.75ID:W1MTXd47
じゃあどんな型だと思うんだい?
2018/09/04(火) 10:48:48.98ID:ntR3woJY
逆にそれ見たらどういう型だと思った?
Int -> Int -> Int
って思ったんじゃない?

なんの本読んでるかしらんけど
例えば add x y z なら Int -> Int -> Int -> Int だけど
実際には
Int -> (Int -> (Int -> Int))
こうなってるってことを言いたいんやろ
698デフォルトの名無しさん
垢版 |
2018/09/04(火) 10:50:47.26ID:0nZVvdsT
>>696

add' :: Int Int -> Int

という型に見えます。
699デフォルトの名無しさん
垢版 |
2018/09/04(火) 10:52:13.57ID:0nZVvdsT
1 2

のように整数をスペース区切りで二つ並べたものに対して、

1 + 2

を対応させる関数に見えます。
700デフォルトの名無しさん
垢版 |
2018/09/04(火) 10:54:55.24ID:0nZVvdsT
関数を返す関数なんですから、

=

の右には数ではなく関数を書くべきです。
701デフォルトの名無しさん
垢版 |
2018/09/04(火) 10:57:59.07ID:0nZVvdsT
f x = x + 2

などの例を見て、

f ● = ■

という表記は、

f(●) = ■

という意味かと思います。
2018/09/04(火) 11:29:45.35ID:ntR3woJY
add は関数を返す関数じゃなくて引数を2つとって値を返す関数やろ
そこでもう勘違いしとる
add 2 3 の結果は関数じゃなくて値やろ?
add 2 のように引数を一個だけ渡したら部分適用されて引数を一個とる関数が返るってだけや

haskellはそういう部分適用できる関数を書きやすいように
add x y = x + y を add = \x -> (\y -> x + y)に自動で変換してくれるってだけ
糖衣構文ってやつ
嫌なら全部ラムダ式で書けばいいよ
2018/09/04(火) 11:41:42.58ID:W1MTXd47
>>698
じゃああなたが今勉強してるカリー化って何なんですかね?
2018/09/04(火) 12:05:07.87ID:/45N32wx
**argv :: char
*argv :: char*
argv :: char**

add' x y :: Int
add' x :: a -> Int
add' :: b -> a -> Int

C言語を学習した人はHaskellも分かる
これが知能だ
2018/09/04(火) 12:52:41.14ID:JkSql3w1
Haxe では関数の型は、
function sum (a:Int, b:Int) : Int

Int -> Int -> Int
引数1 -> 引数2 -> 戻り値

最後は戻り値
2018/09/04(火) 12:54:41.46ID:tHCjwI0T
>>701
Haskellは関数適用が最優先だから
add' x y は (add' x) y って意味
だから add' x y = x + y は
「add' にxを適用した結果にyを適用した結果はx+yに等しい」と読める

ちなみに組み込み関数のuncurryを用いて add'' = uncurry add' とでも定義すると
add'' :: (Int, Int) -> Int
というおそらく>>698 でイメージしているであろうものに近い関数が得られる
Haskellのデフォルトの振る舞いはこちらではないという話
2018/09/04(火) 14:03:08.32ID:TMcC/EnP
通りすがりだけど勉強になった
haskell面白そうだな
2018/09/04(火) 20:06:44.00ID:f+p4hPZb
Haskellちょっといじってると楽しいけどこれで飯食うのは自分には絶対無理という確信がある
2018/09/04(火) 20:32:29.35ID:kOsSso2/
Haskellで食っていきたい
2018/09/04(火) 21:00:34.43ID:jmLwKshs
Haskell丼食いたい
2018/09/05(水) 02:13:16.34ID:sfHxtAx4
市場を作れ
2018/09/05(水) 02:29:20.15ID:XBVLJBKG
まずはHaskellの独壇場となるニッチ市場を開拓しないとな
どこかある?
2018/09/05(水) 02:54:04.71ID:MYQmiXId
写像をドメイン、コドメインのみ与えて定義するのが簡単にできればちょっと優位にたてる分野はある
2018/09/05(水) 17:02:07.24ID:7oDYcpPT
>>713
もう少し詳しく教えて
715デフォルトの名無しさん
垢版 |
2018/09/05(水) 17:04:52.63ID:7oDYcpPT
いまのHaskellには何が足らないのか。どんな分野で強みが活きるのか
2018/09/05(水) 20:52:06.57ID:4jTvsEmq
haskellでddd, cqrs, esのやり方を教えろください
2018/09/07(金) 12:23:22.72ID:bXCAi+24
DDDが活きてくる(と見込める)ほどの規模の案件をhaskellで組むプロジェクトって凄いな

本格的にhaskellを導入してるんだね
2018/09/07(金) 18:05:22.36ID:jiol9czZ
>>716
cqrs haskell でググるとすぐに
https://github.com/BardurArantsson/cqrs
がヒットするが、これではダメなん?
2018/09/07(金) 19:04:41.60ID:2UbG8YkS
>>718
DDD は Extensible Effect と Tagless final がよく合う
2018/09/07(金) 23:54:56.71ID:2UbG8YkS
Haskellに欠けているのは中級者向けの書籍なのかも
2018/09/08(土) 00:07:42.03ID:8HsWZyyw
コンセプトは無茶苦茶面白いのに、肝心の実装が学級的で好き放題に流動的で恐ろしく無責任だからでは
722デフォルトの名無しさん
垢版 |
2018/09/08(土) 13:16:38.32ID:kGQ5zdyq
>>721
そうなのか。具体的にはどのあたりが?
2018/09/10(月) 20:55:39.03ID:Tuk3Smzo
Functional Design and Architecture
https://www.reddit.com/r/haskell/comments/6ck72h/functional_design_and_architecture/
素晴らしい、応援したい
2018/09/11(火) 06:18:11.27ID:xFzcqeSI
発売されたら買おうかな
2018/09/11(火) 20:55:06.43ID:GxY7LXz/
ひゃっほおおおう! ビルド通ったぜ
stackageの可能な限り全部の総計2352パッケージを含むプロジェクトのビルドがやっと通った。
もはや ghci をいったん落として stack.yaml と cabal ファイルにパッケージを追記し... などという面倒をしなくても
ただ import するだけでそれが利用可能になる。
2018/09/15(土) 18:42:49.12ID:UVc1X0kV
spacemacsのinteroでデバッグできてる人います?

replを立ち上げた後、デバッグしようとする(spc m d d)と、
No Haskell session associated with this debug buffer.
てエラーが出て、先に進まないです。
上記はhaskell-debug.elの中に出てくるエラー文で、
上で立ち上げたrepl(stack ghci)がsessionとして認識されてないのが原因?な気がしますが、力及ばずって感じです。
727デフォルトの名無しさん
垢版 |
2018/09/16(日) 08:20:46.91ID:qJ8HI8bW
>>712
金融で使ってる。
あと文書解析。
2018/09/16(日) 22:36:53.37ID:/Gv7qrCh
すみません言語の話題から少し外れますが、

Windows10環境で
WinGHCiコンソール(ver 1.0.6)を使っているのですが
表示フォントをコンソラス等にしても
滑らかな文字表示がされず
メモ帳エディタの様な細いジャギー文字表示になります。

何か環境を弄ったり外部設定ファイルを書き換えたりして
外国のユーザー画面みたいな滑らか文字表示にする方法を
もしご存知でしたら教えて下さい。
729デフォルトの名無しさん
垢版 |
2018/09/17(月) 17:50:28.07ID:tAsBi2aZ
ポールフダックの音楽/Haskellの本が延期しまくりでつらみ
慰めに手を出してみたreact+reduxが割と面白くてjavascriptおじさんになりそう
2018/09/18(火) 15:50:49.67ID:zscrEVSG
ハスケルミュージックスクールってやつ
なら無料で読めるドラフトバージョンのやつよんだけど糞つまらんよ
ほとんどがライブラリーの使い方の説明しか書いてない
731デフォルトの名無しさん
垢版 |
2018/09/18(火) 23:03:29.52ID:5HE01N22
その本です
定価で買うような本じゃなさそうですね…
732デフォルトの名無しさん
垢版 |
2018/09/18(火) 23:04:16.22ID:5HE01N22
遅れましたがありがとう。
733デフォルトの名無しさん
垢版 |
2018/09/19(水) 23:56:22.00ID:Pb0Tb1M0
木構造を表現するときの、「節」とか「葉」って、どう読みますか?
734デフォルトの名無しさん
垢版 |
2018/09/20(木) 12:01:53.37ID:7WHuQIEO
ふし
よう
2018/09/20(木) 12:32:11.09ID:pCCtAD0d
>>733
節 Node
葉 Leaf
2018/09/20(木) 15:10:54.04ID:x+bQf+aM
木をきと読むのならふし、は、
木をもくと読むのならせつ、よう
になる
2018/09/20(木) 19:43:33.25ID:lFTDGMpz
未評価オブジェクトの thunk の語源って何?
2018/09/20(木) 20:48:30.00ID:xkI4bT5j
thunkって?
http://higepon.hatenablog.com/entry/20071202/1196605979
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。