���졢erlang�ˤ��äƤĤ�������ʤΤˡ��ɤ����ޤ���Ĥ����Τ褦�ʤΤǡ�
sumii������ - �����������Ǥϡ�������������������Τɤ��餫�����ˤʤä��顢�⤦�����ΰ����˴ؤ�餺�����֤��פ褦�������±黻��por�פϼ����Ǥ���Ǥ��礦�������Ĥޤꡢint f() { return 1; } /* ���Ѽ����� */ int g() { return g(); } /* Ʊ�� */ int main() { return por(f(), g()) && por(g(), f()) && !por(0, 0); }�Τ褦�ʥץ�����ब1���֤���por�ץޥ����Ͻ񤱤�Ǥ��礦����
�ޤ���erlang�ǡ����ϥꥹ�Ȥ�ʣ���ñ¤±¤ï¿½è¤¦ï¿½Ë¤ï¿½ï¿½Æ¤ï¿½ï¿½ï¿½Þ¤ï¿½ï¿½ï¿½ï¿½Þ¤ï¿½ï¿½ï¿½ï¿½ï¿½Ã¤Æ¤ï¿½ï¿½Ê¤ï¿½ï¿½×¥ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½â¤ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½Ê©ï¿½ï¿½ï¿½ï¿½ï¿½Æ¤ï¿½ï¿½Þ¤ï¿½ï¿½ï¿½
-module(por). -export([por/1, t/0, f/0, l/0]). por(List) -> por(List, []). por([], List) -> por_wait(List); por([Head|Tail], List) -> S = self(), por(Tail, [spawn(fun() -> S ! Head() end) | List]). por_wait(List) -> por_wait(length(List), List). por_wait(0, _) -> false; por_wait(N, List) -> receive Result -> if Result == false -> por_wait(N - 1, List); true -> lists:map(fun(P) -> exit(P,kill) end, List), true end end. t() -> true. f() -> false. l() -> l().
1> c(por). {ok,por} 2> por:por([fun por:f/0, fun por:f/0]). false 3> por:por([fun por:f/0, fun por:t/0]). true 4> por:por([fun por:t/0, fun por:f/0]). true 5> por:por([fun por:t/0, fun por:t/0]). true 6> por:por([fun por:l/0, fun por:t/0]). true 7> por:por([fun por:t/0, fun por:l/0]). true 8> por:por([fun por:t/0, fun por:l/0]) and por:por([fun por:l/0, fun por:t/0]) and not por:por([fun() -> false end, fun() -> false end]) . true 9> i().
�ݡ����֥뤫�ĽŤ�perl�Ǥϡ�����ʴ�����
sub por { my %running = (); for my $cond (@_) { my $pid = fork(); defined $pid or die "fork failed:$!"; if ($pid) { $running{$pid}++; # parent } else { my $code = ref $cond ? $cond : sub { $cond }; exit $code->(); # child } } while (%running) { delete $running{ wait() }; next unless $?; kill INT => keys %running; delete $running{ wait() } while %running; return 1; } return 0; # false; }
my $f = sub { 1 }; my $g; $g = sub { no warnings 'recursion'; $g->() }; my $cond = por($f, $g) && por($g, $f) && !por(0, 0); print "$cond\n"; # 1
���ƤΤȤ��ꡢ�ɤ����
sumii������ - �����������Τ褦�ʥץ�����ब1���֤���por�ץޥ����Ͻ񤱤�Ǥ��礦��������������OS�Υ����ƥॳ�������������ϻȤ�ʤ����ȤȤ��ޤ���
�Ȥ������ˤ�����ȿ§����̩�ˤ�erlang�Ǥ�OS�ǤϤʤ�erlang�μ¹ԴĶ�������������Ƥ���Ƥ���Τǡ���æˡ�����ɰ�ˡ�ˤ��餺�פ����Τ�ޤ��󤬡�
��������ΰճ��ʸ��ѤǤ��͡������������ȡ����ޤ����ĵ��ݤ��Ƥ���֤�Ϳ�ޤ����Ժη褷�Ƥ��봶��...
Dan the Infinite Looper
���Υ֥����˥����Ȥ���ˤ�����������ɬ�פǤ���
��������������
���ε����ˤϵ��ĥ桼�����������Ȥ��Ǥ��ޤ���