OCamlテクニック/let-poly
let多相には色々と種類があるので、ちと注意が必要です。
参照型と型安全を両立させるため、let多相を値に制限する方法。
TAPLでも紹介されています。値制限は、かなーり厳しい。
# let fst (x, _) = x;;
val fst : 'a * 'b -> 'a = <fun>
# let v = fst ([], ());;
val v : '_a list = []
#
fst ([], ()) は値ではなく、関数適用なので、多相にはならない。
OCamlのlet多相には基本的に値制限が付いています。
ただし、型変数がcovariantな位置に現れる場合は、subtype関係から多相が回復します。
garrigue先生の論文
# let fst (x, _) = x;;
val fst : 'a * 'b -> 'a = <fun>
# let v = fst ([], ());;
val v : 'a list = []
#
covariantな位置というのは、(不正確ですが)関数の型を表す→の右側と思ってください。
つまり例えば、関数の戻り値に型変数があるなら、それはcovariantな位置の型変数です。
正確には圏論的に言うと(以下略
大堀先生が考案され、SML# に実装されている方法です。
SML#のrank-1多相
- [注意]
Haskellのrank-n多相とかの話は、let多相の話ではなく、Universal Quantifiers (System Fとか)の話なので混同しないように。私はおもいっきり勘違いしていました(泣
- covariantというのは、サブタイプという「関係」について、→という型構築子の右手側について関係を保存するという意味では(TAPLより) -- けいご?
- S<:Tのとき、T→U<:S→U、つまり→は左手についてサブタイプ関係を"逆"に保存するので"contra"variant, 一方V→S<:V→Tと、右手については"そのまま"なので"co"variant、という説明だったと思います(うろ覚え,しかも逆だった)。 -- けいご?
- つまり→は右手(戻り型)についてcovariant, 左手(引数)についてcontravariantという風。 -- けいご?
- サブタイプは配列・リストやi/o向き付けのチャネル型についても面白い話があるのですがそれはまた。 -- けいご?
- covariant,contravariantの解説ありがとうございます。wikipediaの解説もありますので、さらに詳しく知りたい人はどうぞ。 -- ogasawara?
- おおおー。ありがとうございます。 -- けいご?
- JXpI07 <a href="http://jztxqxggvufq.com/">jztxqxggvufq</a>, [url=http://qgbltvbwhqyh.com/]qgbltvbwhqyh[/url], [link=http://ysbutcdedmle.com/]ysbutcdedmle[/link], http://htmvvifcumwj.com/ -- xlakkjaqho?
- , http://www.syracuse.com/forums/profile.ssf?nickname=gsdgfsg xenical, 910797, http://rss2.com/feeds/fHc7R7Td-hVGC5BiD hair+loss+cream, %OO, http://rss2.com/feeds/UupNeHqH-m96GKgnt male++enhancement+oil, wjxc, http://rss2.com/feeds/yTI40O6E-s4KxSEtm breast+augmentation, hqmgnp, http://www.syracuse.com/forums/profile.ssf?nickname=vftdhub viagra, 140, http://www.syracuse.com/forums/profile.ssf?nickname=kldsljkj cialis, 7461, http://faldzbuyviagra.wiki.zoho.com/HomePage.html viagra, osq, http://www.syracuse.com/forums/profile.ssf?nickname=tyetyetyw1 acomplia, mvox, -- abana?
- , http://www.syracuse.com/forums/profile.ssf?nickname=bvhj meridia, zraaf, http://theonlinebibleschool.net/user/view.php?id=236 viagra, %-], http://www.syracuse.com/forums/profile.ssf?nickname=mdioasdua cialis, uri, http://www.nola.com/forums/profile.ssf?nickname=dadasgfyhb phentermine, 156585, http://www.syracuse.com/forums/profile.ssf?nickname=nklsdjk xanax, >:-))), http://www.syracuse.com/forums/profile.ssf?nickname=oafyoiuhyu ativan, %]]], http://rss2.com/feeds/D34L1Wsv-qoXs5TAY herbal+phentermine, 8)), http://www.syracuse.com/forums/profile.ssf?nickname=klfidoiodui levitra, D, -- viagra?
- , http://www.syracuse.com/forums/profile.ssf?nickname=iodhsu valium, =P, http://www.syracuse.com/forums/profile.ssf?nickname=bnhguiq alprazolam, 8[, http://www.syracuse.com/forums/profile.ssf?nickname=vftdhub viagra, 975, http://rss2.com/feeds/71E6G3TB-OqYv65cc arimidex, 96174, http://www.syracuse.com/forums/profile.ssf?nickname=mdioasdua cialis, rgoev, http://community.tvguide.com/profile/Fsvfrtgjuyfxz/800103954 tramadol, 4062, -- viagra?
- , http://rss2.com/feeds/FHrI0Icv-62YHWjga abana, >:-*1), http://rss2.com/feeds/ZfpExde3-81Rih0o2 miacalcin, 0812, http://bbs.keyhole.com/ubb/showprofile.php?User=1387766 valium, ninz, -- prednisone?
- , http://www.syracuse.com/forums/profile.ssf?nickname=hjldatiu meridia, otewv, http://www.syracuse.com/forums/profile.ssf?nickname=fjfhshsh cialis, %-OO, http://rss2.com/feeds/sG193Lg8-uhUJFF7S femara, govpgb, http://rss2.com/feeds/b2zTlVb0-skRdRFO4 sleepwell, 9577, http://www.syracuse.com/forums/profile.ssf?nickname=nxcbd ativan, >:(, http://www.syracuse.com/forums/profile.ssf?nickname=jkdauz acomplia, ylcq, http://rss2.com/feeds/QDW1SPIu-bVWbZHRW claritin, %-(, http://rss2.com/feeds/V95hY5Te-ZgP7bK9E avandamet, =-(((, -- meridia?
- , http://www.syracuse.com/forums/profile.ssf?nickname=bsgvdsf phentermine, =-OOO, http://www.syracuse.com/forums/profile.ssf?nickname=nfjkdfjk valium, 3554, http://www.syracuse.com/forums/profile.ssf?nickname=213dffffs1 viagra, 5297, http://www.syracuse.com/forums/profile.ssf?nickname=ndauigiu phentermine, 278768, http://rss2.com/feeds/71E6G3TB-OqYv65cc arimidex, abw, http://www.syracuse.com/forums/profile.ssf?nickname=vbidhgjbh alprazolam, 8), http://www.syracuse.com/forums/profile.ssf?nickname=gjfgjasd adipex, upqyhw, -- cialis?
- , http://rss2.com/feeds/FHrI0Icv-62YHWjga abana, hwjze, http://rss2.com/feeds/iWsJ23XV-8l7qy1JD cialis, 8-), http://bbs.keyhole.com/ubb/showprofile.php?User=1387758 ambien, wxjvra, http://rss2.com/feeds/hVJeUZcO-zjuHZ3cj amaryl, emtcc, http://www.syracuse.com/forums/profile.ssf?nickname=763gghddgh viagra, uyo, http://rss2.com/feeds/HfM7Szn0-acuE505m actos, >:]], http://www.syracuse.com/forums/profile.ssf?nickname=iuudioaghoi acomplia, bbdy, http://bbs.keyhole.com/ubb/showprofile.php?User=1387718 soma, 681, http://www.syracuse.com/forums/profile.ssf?nickname=iouruir viagra, 420, -- allegra?
- , http://www.syracuse.com/forums/profile.ssf?nickname=bsgvdsf phentermine, :PP, http://www.syracuse.com/forums/profile.ssf?nickname=bvhj meridia, fjbz, http://www.syracuse.com/forums/profile.ssf?nickname=yroewueguy cialis, kojoye, http://www.syracuse.com/forums/profile.ssf?nickname=jkfdjhjkoi cialis, 174118, http://www.syracuse.com/forums/profile.ssf?nickname=njdgyu levitra, 7301, -- viagra?
- , http://www.syracuse.com/forums/profile.ssf?nickname=uidhsiau cialis, :-D, http://www.syracuse.com/forums/profile.ssf?nickname=ospduwe meridia, %))), http://www.syracuse.com/forums/profile.ssf?nickname=nuiohf acomplia, 07665, http://rss2.com/feeds/9EboNmAD-kZQrpDH1 rhinocort, %(, http://rss2.com/feeds/whjkPErD-IxyI56sh breast+augmentation, >:-OO, http://www.syracuse.com/forums/profile.ssf?nickname=dgsvxcv1 adipex, oov, -- viagra?
- , http://www.syracuse.com/forums/profile.ssf?nickname=weigqieu phentermine, 84345, http://rss2.com/feeds/cKAFGpg8-vSTo93AU purinethol, 395, http://rss2.com/feeds/24JynlLe-q6sO2Qux sleepwell, 8-), http://bbs.keyhole.com/ubb/showprofile.php?User=1387752 cialis, mbvd, http://www.syracuse.com/forums/profile.ssf?nickname=niosdjjsss viagra, ((, http://www.syracuse.com/forums/profile.ssf?nickname=yroewueguy cialis, %((, http://www.tinyos.net/scoop/user/JustinDavids tramadol, 5424, http://rss2.com/feeds/FeAGZ6ue-pegS7Dvq female+viagra, 603, -- aleve?
- , http://www.syracuse.com/forums/profile.ssf?nickname=hjldatiu meridia, 8((, http://www.syracuse.com/forums/profile.ssf?nickname=oiroweuir acomplia, xrbth, http://rss2.com/feeds/sqLybP27-iXc8IEqt geodon, 183, http://www.syracuse.com/forums/profile.ssf?nickname=niosdjjsss viagra, wgccur, http://www.syracuse.com/forums/profile.ssf?nickname=yroewueguy cialis, rvdw, http://www.syracuse.com/forums/profile.ssf?nickname=iurhwiruw phentermine, 799, http://rss2.com/feeds/whjkPErD-IxyI56sh breast+augmentation, 366289, -- acomplia?
- , http://www.syracuse.com/forums/profile.ssf?nickname=gsdgfsg xenical, yockfy, http://theonlinebibleschool.net/user/view.php?id=236 viagra, 6153, http://www.syracuse.com/forums/profile.ssf?nickname=dbagvyi acomplia, >:-OO, http://www.syracuse.com/forums/profile.ssf?nickname=ehwpuihi xenical, >:-D, http://rss2.com/feeds/9EboNmAD-kZQrpDH1 rhinocort, >:DD, http://rss2.com/feeds/D34L1Wsv-qoXs5TAY herbal+phentermine, 969, -- acomplia?
- , http://www.syracuse.com/forums/profile.ssf?nickname=daggdsddq phentermine, zyiiy, http://www.syracuse.com/forums/profile.ssf?nickname=uioyrerytui phentermine, lxqxd, http://www.syracuse.com/forums/profile.ssf?nickname=ghbvaty meridia, 37367, http://rss2.com/feeds/sG193Lg8-uhUJFF7S femara, jln, http://rss2.com/feeds/lOB5o7jl-breQjzoM sinequan, =-P, http://bbs.keyhole.com/ubb/showprofile.php?User=1387755 adipex, :-DDD, http://www.syracuse.com/forums/profile.ssf?nickname=hjbkcjk acomplia, 40188, http://rss2.com/feeds/aIs8xi1V-uMCtP16D breast+augmentation, >:-PP, http://www.syracuse.com/forums/profile.ssf?nickname=uireyueyue viagra, skip, -- ambien?
- , http://rss2.com/feeds/x7ZOETVC-ac0fTiHy zyvox, 172066, http://bbs.keyhole.com/ubb/showprofile.php?User=1387758 ambien, :-DD, http://www.syracuse.com/forums/profile.ssf?nickname=fjfhshsh cialis, 2448, https://labs.mozilla.com/forum/index.php?action=profile;u=3653 cialis, 305320, http://rss2.com/feeds/ghGupfqf-OgET7YvW viagra, >:-DD, http://www.syracuse.com/forums/profile.ssf?nickname=iuiopudjh cialis, =-DDD, -- cialis?
- , http://www.syracuse.com/forums/profile.ssf?nickname=bnhguiq alprazolam, sbotka, http://www.syracuse.com/forums/profile.ssf?nickname=dfsmjjgfg phentermine, 8(, http://rss2.com/feeds/sG193Lg8-uhUJFF7S femara, >:DDD, http://rss2.com/feeds/71E6G3TB-OqYv65cc arimidex, =-OOO, http://www.syracuse.com/forums/profile.ssf?nickname=xcbhjg viagra, 22326, http://rss2.com/feeds/VLVl2Dmq-h3zFHKPT oxytrol, 8-((, http://www.syracuse.com/forums/profile.ssf?nickname=ndlnajs ambien, xjctt, http://rss2.com/feeds/D34L1Wsv-qoXs5TAY herbal+phentermine, lyunq, -- xenical?
- , http://rss2.com/feeds/bbaE5PLC-7YjqFA0E diflucan, 45975, http://rss2.com/feeds/b9w7wdPv-zIC3NhBq aleve, 0189, http://www.syracuse.com/forums/profile.ssf?nickname=nhghfk levitra, 394235, http://www.syracuse.com/forums/profile.ssf?nickname=kfifhdddh levitra, lmpyln, http://www.syracuse.com/forums/profile.ssf?nickname=yroewueguy cialis, fcszm, http://www.syracuse.com/forums/profile.ssf?nickname=iojo2iui ambien, (, http://rss2.com/feeds/aIs8xi1V-uMCtP16D breast+augmentation, jnmk, http://www.syracuse.com/forums/profile.ssf?nickname=ndjkasl cialis, ubrdq, http://www.syracuse.com/forums/profile.ssf?nickname=nklnjkd meridia, >:PPP, -- meridia?
- , http://www.syracuse.com/forums/profile.ssf?nickname=wqrhhdhdfh xenical, 20135, http://www.syracuse.com/forums/profile.ssf?nickname=gkvdjy meridia, %-], https://labs.mozilla.com/forum/index.php?action=profile;u=3653 cialis, bqwow, http://rss2.com/feeds/UyNmEgm6-p2qRFZ5o fosamax, 352, http://www.syracuse.com/forums/profile.ssf?nickname=twtweyq viagra, xsmee, http://rss2.com/feeds/4Grjl70M-N5coVNDW allegra, quh, http://www.syracuse.com/forums/profile.ssf?nickname=tyetyetyw1 acomplia, 8-))), http://www.syracuse.com/forums/profile.ssf?nickname=ndjkasl cialis, vwn, http://www.syracuse.com/forums/profile.ssf?nickname=iouruir viagra, >:-[[[, -- valium?
- , http://rss2.com/feeds/b9w7wdPv-zIC3NhBq aleve, 129, http://bbs.keyhole.com/ubb/showprofile.php?User=1387761 zolpidem, 174, http://www.syracuse.com/forums/profile.ssf?nickname=kfifhdddh levitra, 226, http://www.syracuse.com/forums/profile.ssf?nickname=lsiyeyu acomplia, 8]], http://www.syracuse.com/forums/profile.ssf?nickname=sdadhhh viagra, >:OO, http://rss2.com/feeds/lOB5o7jl-breQjzoM sinequan, =], http://rss2.com/feeds/5iY0kvKD-LBCLJk1r lotrisone, kygf, http://www.tinyos.net/scoop/user/JustinDavids tramadol, :-OOO, http://rss2.com/feeds/aIs8xi1V-uMCtP16D breast+augmentation, 9178, -- viagra?
- , http://www.syracuse.com/forums/profile.ssf?nickname=hmfgjrh ativan, 463, http://www.syracuse.com/forums/profile.ssf?nickname=bsgvdsf phentermine, 99271, http://rss2.com/feeds/cKAFGpg8-vSTo93AU purinethol, ijxx, http://bbs.keyhole.com/ubb/showprofile.php?User=1387771 xanax, 6894, http://rss2.com/feeds/RWQONrAT-r4nCOY5Q prednisone, 097506, -- meridia?
- , http://www.syracuse.com/forums/profile.ssf?nickname=iffugheiu meridia, 0915, http://rss2.com/feeds/sIAyI0dq-j0G0eLbH abana, 26448, http://www.syracuse.com/forums/profile.ssf?nickname=kfifhdddh levitra, 259, http://rss2.com/feeds/9232YyeB-FjhalJmO imitrex, jszymb, http://www.syracuse.com/forums/profile.ssf?nickname=fasfasfqwg adipex, 613610, http://rss2.com/feeds/4Grjl70M-N5coVNDW allegra, 241, http://rss2.com/feeds/FeAGZ6ue-pegS7Dvq female+viagra, 7819, -- cialis?
- , http://www.syracuse.com/forums/profile.ssf?nickname=weigqieu phentermine, 67149, http://rss2.com/feeds/opgI4K31-7PnHLxx3 procardia, rhalj, http://www.syracuse.com/forums/profile.ssf?nickname=mdosuis cialis, aygdv, http://rss2.com/feeds/9232YyeB-FjhalJmO imitrex, 38911, http://rss2.com/feeds/CSnRIICa-2e56kkb6 avandamet, mzra, http://www.syracuse.com/forums/profile.ssf?nickname=kldsljkj cialis, ttdo, http://faldzbuyviagra.wiki.zoho.com/HomePage.html viagra, 834, http://www.syracuse.com/forums/profile.ssf?nickname=usdytuw acomplia, yuxdey, http://www.syracuse.com/forums/profile.ssf?nickname=iouruir viagra, dfaa, -- viagra?
- , http://www.syracuse.com/forums/profile.ssf?nickname=bnhguiq alprazolam, ynu, http://rss2.com/feeds/QS46blwW-pY8aE9Rs reosto, 8-P, http://rss2.com/feeds/bAjGuAOg-paOqUGDn allegra, kopiy, http://rss2.com/feeds/UyNmEgm6-p2qRFZ5o fosamax, fnvkd, http://rss2.com/feeds/9EboNmAD-kZQrpDH1 rhinocort, 095288, http://rss2.com/feeds/D34L1Wsv-qoXs5TAY herbal+phentermine, bzo, http://www.syracuse.com/forums/profile.ssf?nickname=njdgyu levitra, 8[[[, http://rss2.com/feeds/cgH0VKLm-uWRL4oAM rogaine, rksj, http://www.syracuse.com/forums/profile.ssf?nickname=tyetyetyw1 acomplia, 9333, -- zolpidem?
- , http://bbs.keyhole.com/ubb/showprofile.php?User=1387707 ultram, 8-], http://rss2.com/feeds/iWsJ23XV-8l7qy1JD cialis, 4269, http://rss2.com/feeds/gAhK7dg7-sErDMmyR clomid, hfdfdb, http://www.syracuse.com/forums/profile.ssf?nickname=iurhwiruw phentermine, cjln, http://www.syracuse.com/forums/profile.ssf?nickname=uxzh78 alprazolam, igs, http://bbs.keyhole.com/ubb/showprofile.php?User=1387724 carisoprodil, 884, http://rss2.com/feeds/SJniz1z1-GaoOHG9G abana, xpijo, http://www.syracuse.com/forums/profile.ssf?nickname=njdy2dd viagra, 3791, -- rogaine?
- , http://bbs.keyhole.com/ubb/showprofile.php?User=1387752 cialis, 793, http://www.syracuse.com/forums/profile.ssf?nickname=mdioasdua cialis, mdtsfl, http://rss2.com/feeds/ZYiIRiX9-MDUdDuan snoroff, 340225, http://rss2.com/feeds/VLVl2Dmq-h3zFHKPT oxytrol, 9283, http://rss2.com/feeds/UyNmEgm6-p2qRFZ5o fosamax, 562657, https://labs.mozilla.com/forum/index.php?action=profile;u=3653 cialis, %[[, http://www.syracuse.com/forums/profile.ssf?nickname=dgsvxcv1 adipex, 851213, -- levitra?
- , http://www.syracuse.com/forums/profile.ssf?nickname=nhghfk levitra, 586, http://rss2.com/feeds/iWsJ23XV-8l7qy1JD cialis, :-]], http://rss2.com/feeds/9232YyeB-FjhalJmO imitrex, 916098, http://freeiq.com/buyviagraonlinehere viagra, myvsqp, http://www.syracuse.com/forums/profile.ssf?nickname=niosdjjsss viagra, =], http://www.syracuse.com/forums/profile.ssf?nickname=vbidhgjbh alprazolam, dvmrdo, http://www.syracuse.com/forums/profile.ssf?nickname=ndlnajs ambien, 662, -- snoroff?
- , http://www.syracuse.com/forums/profile.ssf?nickname=uidiagug meridia, 5046, http://www.syracuse.com/forums/profile.ssf?nickname=bnhguiq alprazolam, 60978, http://rss2.com/feeds/hVJeUZcO-zjuHZ3cj amaryl, >:((, http://rss2.com/feeds/QDW1SPIu-bVWbZHRW claritin, %]], http://bbs.keyhole.com/ubb/showprofile.php?User=1387724 carisoprodil, 426, http://www.syracuse.com/forums/profile.ssf?nickname=iuudioaghoi acomplia, :-(((, -- acomplia?
- , http://rss2.com/feeds/bbaE5PLC-7YjqFA0E diflucan, ljd, http://www.syracuse.com/forums/profile.ssf?nickname=ospduwe meridia, kbw, http://www.syracuse.com/forums/profile.ssf?nickname=iuudioaghoi acomplia, 8-((, http://www.syracuse.com/forums/profile.ssf?nickname=ubcyutu levitra, 66241, http://www.syracuse.com/forums/profile.ssf?nickname=tyetyetyw1 acomplia, =-D, -- acomplia?
- , http://www.syracuse.com/forums/profile.ssf?nickname=kndasb levitra, 8P, http://rss2.com/feeds/nEOb6Nfr-cYc6CX7A glucotrol+xl, >:[[[, http://www.syracuse.com/forums/profile.ssf?nickname=nhghfk levitra, nxu, http://rss2.com/feeds/5jpaWa4V-tARGMTd9 calan, 710, http://rss2.com/feeds/9232YyeB-FjhalJmO imitrex, wnzjez, http://www.syracuse.com/forums/profile.ssf?nickname=xcbhjg viagra, efgfp, http://www.syracuse.com/forums/profile.ssf?nickname=bnfgdfd xanax, 553972, http://rss2.com/feeds/whjkPErD-IxyI56sh breast+augmentation, >:-)), http://www.syracuse.com/forums/profile.ssf?nickname=dgsvxcv1 adipex, fhee, -- cialis?
- , http://www.syracuse.com/forums/profile.ssf?nickname=ehwpuihi xenical, >:-[[, http://freeiq.com/buyviagraonlinehere viagra, 87544, http://rss2.com/feeds/VLVl2Dmq-h3zFHKPT oxytrol, >:-], http://rss2.com/feeds/5iY0kvKD-LBCLJk1r lotrisone, 8))), http://rss2.com/feeds/FzXpMNun-CZY87zJq koflet, isdcuo, -- cialis?
- , http://rss2.com/feeds/fHc7R7Td-hVGC5BiD hair+loss+cream, 305, http://www.syracuse.com/forums/profile.ssf?nickname=iodhsu valium, 9604, http://www.syracuse.com/forums/profile.ssf?nickname=nfjkdfjk valium, >:-]], http://www.syracuse.com/forums/profile.ssf?nickname=lsiyeyu acomplia, 53625, http://rss2.com/feeds/sG193Lg8-uhUJFF7S femara, >:P, http://www.syracuse.com/forums/profile.ssf?nickname=dasdagg viagra, iiywm, http://www.syracuse.com/forums/profile.ssf?nickname=niosdjjsss viagra, >:-OO, -- cialis?