In [1]:
VERSION
Out[1]:
v"0.5.2"

ズンドコキヨシ

In [2]:
function zundokochannel()
    function _producer(channel::Channel{String})
        i = 1
        while i > 0
            zd, i = rand([("ズン", i + 1), ("ドコ", +(i<5))])
            put!(channel, zd)
        end
        put!(channel, "キ・ヨ・シ!")
        close(channel)
    end
    channel = Channel{String}(32)
    @schedule _producer(channel)
    channel
end
Out[2]:
zundokochannel (generic function with 1 method)
In [3]:
for cw in zundokochannel()
    print(cw)
end
ドコドコドコズンドコドコズンドコズンドコドコズンドコドコズンズンズンドコズンズンズンドコドコドコドコズンズンズンズンドコキ・ヨ・シ!
In [4]:
collect(zundokochannel())
Out[4]:
11-element Array{String,1}:
 "ズン"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ドコ"    
 "キ・ヨ・シ!"

ズンドコキヨシ(厳密版)

In [5]:
function zundokostrictchannel()
    function _producer(channel::Channel{String})
        i = 1
        while i > 0
            zd, i = rand([("ズン", i + 1), ("ドコ", +(i!=5))])
            put!(channel, zd)
        end
        put!(channel, "キ・ヨ・シ!")
        close(channel)
    end
    channel = Channel{String}(32)
    @schedule _producer(channel)
    channel
end
Out[5]:
zundokostrictchannel (generic function with 1 method)
In [6]:
for cw in zundokostrictchannel()
    print(cw)
end
ズンドコズンズンズンドコズンドコズンドコズンズンドコズンズンズンドコズンドコドコズンドコズンズンドコズンドコドコズンドコドコドコドコドコドコズンドコドコズンズンドコドコズンズンズンズンズンドコズンズンドコドコドコドコドコズンドコドコドコドコズンズンドコドコズンズンドコドコズンズンドコドコドコズンズンドコズンズンドコズンドコドコドコドコズンズンズンズンドコキ・ヨ・シ!
In [7]:
collect(zundokostrictchannel())
Out[7]:
261-element Array{String,1}:
 "ドコ"    
 "ズン"    
 "ドコ"    
 "ズン"    
 "ドコ"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ドコ"    
 "ドコ"    
 "ドコ"    
 ⋮       
 "ズン"    
 "ズン"    
 "ドコ"    
 "ズン"    
 "ドコ"    
 "ドコ"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ドコ"    
 "キ・ヨ・シ!"

参考:ズンドコキヨシ(Task Iteration)

In [8]:
function zundokotask()
    function _producer()
        i = 1
        while i > 0
            zd, i = rand([("ズン", i + 1), ("ドコ", +(i<5))])
            produce(zd)
        end
        produce("キ・ヨ・シ!")
    end
    @task _producer()
end
Out[8]:
zundokotask (generic function with 1 method)
In [9]:
for cw in zundokotask()
    print(cw)
end
ドコズンズンドコズンズンズンドコズンズンドコドコドコドコズンドコドコドコドコズンズンズンズンドコキ・ヨ・シ!
In [10]:
collect(zundokotask())
Out[10]:
16-element Array{String,1}:
 "ドコ"    
 "ズン"    
 "ドコ"    
 "ズン"    
 "ズン"    
 "ドコ"    
 "ズン"    
 "ドコ"    
 "ドコ"    
 "ドコ"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ズン"    
 "ドコ"    
 "キ・ヨ・シ!"
In [ ]: