際際滷

際際滷Share a Scribd company logo
Clean 古h ?
Clean のC嬬 W决u 徭咼リ`晒 侏クラス 旗方議デ`タ夛 Milner/Mycroft に児づく侏システム マクロ 匯吭侏 t各侏 ダイナミック
だいたい Haskell と匯w
匯吭侏 険恬喘をgFしつつ歌孚邑苧來を隠^するため
歌孚邑苧來って v方と哈方のMみ栽わせが匯wならY惚は械に揖じ f x = x + 1 なら <f,x=2> なら駅ず 2 をかえす a = 3 なら駅ず a は 3 a = 3;a = a+1; Y惚が揖じじゃなくなる 歌孚邑苧來が隠^されない
シャド`イング + 壅崩`ならおk ? let a = 3 in ?  let a = a + 1 ならおkじゃね
} let a1 = fread f ?:: String let f = fwrite 'a' f :: File let a2 = fread f ?:: String a1 == a2 <false> 匯佩朕と眉佩朕のY惚が`う 歌孚邑苧來が欧譴襭  ?
? ファルス ! ☆ フォ`ルスです
? j朕じゃん
? a1 が歌孚できなけばおk それが 匯吭侏
匯吭侏のアイディア 篤乙銚仟をしてもQ賀できなければおk 篤乙銚仟をした瘁に念の歌孚を隔たなければおk
匯吭侏をつかった箭 WriteAB :: *File -> File? WriteAB file = fileAB? where fileA = fwritec 'a' file? ? fileAB = fwritec 'b' fileA
匯吭侏の箭 AppendAB :: *File -> (File, File)? AppendAB file = (fileA, fileB)? where fileA = fwritec 'a' file? ? fileB = fwritec 'b' file   < エラ`になる > Uniqueness error [tak.icl,23,AppendAB]:?&quot;file&quot; demanded attribute cannot be offered by shared object
なぜエラ`になったか file にする歌孚が屈つ 匯吭侏は object にする歌孚が匯つでないといけない
恷兜のれ どのようにsされるのか
肝の箭 file にして歌孚が屈つあるのダメ
こういうLにもける WriteAB :: *File -> File? WriteAB file? ? # file = fwritec 'a' file? ? # file = fwritec 'b'? file = file   凋綜侏みたいにこういうLにもかけます。
なにが冱いたいか 凋綜侏のプログラマは 揖じ並を^の嶄でやっている !
GUI module hello import StdEnv, StdIO Start :: *World -> *World Start  world =  startIO  NDI Void (snd o  openDialog  undef hello) [] world where hello =  Dialog  &quot;&quot; (TextControl &quot;Hello world!&quot; [])? ? ? ? ? ? ? ? ?  [WindowClose (noLS closeProcess)]
畠各楚晒徨 :: T2 b = C2 (b: b -> b)      --?〜? :: T2 b = C2 (A.b: b -> b) ? ? ? ? ? ?-- ? f2:: (T2 b) -> (Int,Char) f2 (C2 g) = (g 1, g 'a') たぶん Haskell と揖じなので冱うことは蒙にない´
贋壓楚晒徨 :: List = E.a: Cons a List | Nil newlist = Cons 1 Nil Hd :: List -> ? //  床議に侏原けできない Hd (Cons x xs) = x // コンパイルエラ`になる Tl :: List -> List //OK Tl (Cons x xs) = xs 函り竃す圭隈がない L盈された彜Bを燕F辛嬬
塘双 リストと塘双のQ NewArray = {elem  elem <- ListA}NewList = {elem  elem <-: ArrayA} 塘双の厚仟 {Array5 & [i]=2*i+1  i <- [0..4]} // 塘双の厚仟 {1,3,5,7,9} を竃薦する 塘双のパタ`ン CopyFirst j a=:{[0]=a0} = {a & [j] = a0}
マクロ   :: Color :== Int   Black :== 1   White :== 0   invert :: Color -> Color   invert Black = White   invert White = Black
t各プログラミング めんどくさいんで並
グラフきQ Clean の吭龍はグラフきQ Clean のプログラムは Start から兵まるグラフ v方はグラフきQえt グラフにしてグラフきQえtをm喘するのが麻 グラフきQえが竃栖なくなったものを屎ミ
? Start :: Int? Start = Length [3,4]? ? Length :: [x] -> Int? Length [a:x] = 1 + Length x? Length [] = 0
? Start  ||a: ? ? ? ? ? ? ? ?  これは率匯の辛s塀であり、 Start tをm喘する  ->? Length [3,4]  ||b: ? ? ? このグラフは、畠悶として仟しい辛s塀である  ->? 1 +  Length [4]  ||c: ? ? ? 紗麻處麻徨 + は、2桑朕の哈方のuを崙する  ->? 1 + 1 +  Length []  ||d: ? また + の2桑朕の哈方  ->? 1 +  1 + 0  ||e: ? ? ? ? ? ? 2桑朕の + の2桑朕の哈方は、 (r)nf にQえられる  ->? 1 + 1  ||f: ? ? ? ? ? ? ? ? グラフは、畠悶として仟しい辛s塀である  ->? 2 ||g: ? ? ? ? ? ? ? ? ? ? ? ? グラフは、 (r)nf の嶄にある
? ?
グラフときQえt GRS = {Rule} ; Rule = RedexPattern '->' ContractumPattern [',' Redirection] ? ? ? ? ?  | RedexPattern '->' Redirection ; RedexPattern ? ? ? ? = Graph ; ContractumPattern = Graph ; Graph ? ? ? ? ? ? ? = [Nodeid ':'] Node {',' NodeDef} ; Nodeid ? ? ? ? ? ? ?= NodeIdVariable | NodeIdConstant ; Node ? ? ? ? ? ? ? ?= Symbol {Arg} | EmptyNode ; Symbol ? ? ? ? ? ?= Constant ; Arg ? ? ? ? ? ? ? ? ?= Nodeid | [Nodeid ':'] Symbol ? ? ? ? ? ? ? ? ? ? ? ?  | [Nodeid ':'] '(' Node ')' ; EmptyNode ? ?= '_|_'; NodeDef ? ? ? ? = Nodeid ':' Node ; Redirection ? ? = Nodeid ':=' Nodeid | Nodeid ;

More Related Content

Clean

Editor's Notes

  • #3: Hindley-Damas-Milner の ML と`って侏容できない並があるらしい。 ランク 2 の畠各楚晒侏 3.7.4 歌孚が聞喘される栽、プログラマによる苧幣議な侏原けを駅勣とする Haslell は System F お
  • #10: ムスカさん 28 蒙Cv
  • #13: File にアスタリスクがついているのが匯吭侏だという並 fwritec のな篤乙銚仟を軟こすv方に嚥える哈方は匯吭侏でないといけない File&amp;quot;argument 2 of fwritec&amp;quot; attribute at indicated position could not be coerced ^ File
  • #14: オブジェクトk
  • #16: fileA が歌孚すのは fileA によってかきかえ
  • #18: Let-before 塀坪では協方xk徨┘哀薀婉xし # を原ける並によってシャド`イングがおこなわれ
  • #20: Clean のプログラムは Start で_兵 World は翌何彜Bすなわち仝繁伏、嚴帑、すべての基え々が StartIO の 及匯哈方は NDI,SDI,MDI 及屈哈方は兜豚彜B 及眉哈方はv方 (PSt .l) -&gt; (PSt .l) で、ダイアログやメニュ`のようなプロセスコンポ`ネントを伏撹 及膨哈方はプロセス奉來のリスト 及励哈方は World 児云議に匯吭な弊順を鞭け函って Dialog の 及匯哈方はタイトル 及屈哈方は コントロ`ルの撹 及眉哈方はウィンドウ奉來のリスト ダイアログやボタンはハンドルと柵ばれプロセス彜Bを鞭け函って卦す彜Bw卞v方とs
  • #21: A が forall n しくはしらいしさん
  • #22: Haskell と揖吉のことは易墳さんにいてください
  • #23: Clean では猟忖双は Char の塘双です。 gHにおぶ
  • #25: 徭強議にクラスを恬撹しインスタンスのv方を協吶しなくても廖むようにする