niktkolwiek

lista 10 zad 2

Dec 13th, 2011
622
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. %Wrapper.oz
  2. functor
  3. export
  4.    wrap:Wrap
  5.    unwrap:Unwrap
  6. define
  7.    Key={NewName}
  8.    Wrap Unwrap
  9. in
  10.    fun {Wrap X} fun {$ K} if K==Key then X end end
  11.    end
  12.    fun {Unwrap W}
  13.       try {W Key} catch _ then raise error(unwrap(W)) end end
  14.    end
  15. end
  16.  
  17. %Queue.oz
  18. functor
  19. import
  20.    Wrapper
  21. export
  22.    tworz_pusta:Pusta
  23.    do_kolejki:DoKolejki
  24.    z_kolejki:ZKolejki
  25.    pierwszy_element:PElement
  26.    kolejka_pusta:CzyPusta
  27. define
  28.    fun {Pusta} {Wrapper.wrap kolejkaPusta} end
  29.    fun {DoKolejki E#Q}
  30.       {Wrapper.wrap skladowa(E {Wrapper.unwrap Q})}
  31.    end
  32.    fun {PElement Q}
  33.       local fun {Pom Q}
  34.            case Q
  35.            of kolejkaPusta then raise kolejkaPusta end
  36.            [] skladowa(E kolejkaPusta) then E
  37.            [] skladowa(E Qe) then {PElement Qe}
  38.            end
  39.         end
  40.       in {Pom {Wrapper.unwrap Q}}
  41.       end
  42.    end
  43.    fun {ZKolejki Q}
  44.       local fun {Pom Q}
  45.       case Q
  46.       of kolejkaPusta then raise kolejkaPusta end
  47.       [] skladowa(E kolejkaPusta) then kolejkaPusta
  48.       [] skladowa(E Qe) then skladowa(E {Pom Qe})
  49.       end
  50.       end in {Wrapper.wrap {Pom {Wrapper.unwrap Q}}}
  51.       end
  52.    end
  53.    fun {CzyPusta Q}
  54.       {Wrapper.unwrap Q}==kolejkaPusta
  55.    end
  56. end
  57.  
  58. %test.oz
  59. declare [Qu]={Module.link['Queue.ozf']}
  60. declare
  61. Q={Qu.do_kolejki 3 {Qu.do_kolejki 2 {Qu.do_kolejki 1 {Qu.tworz_pusta}}}}
  62. {Show{Qu.pierwszy_element {Qu.z_kolejki Q}}}
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×