Perl6-Pugs
view release on metacpan or search on metacpan
docs/summaries/2006/03-31.pod view on Meta::CPAN
419420421422423424425426427428429430431432433434435436437438439and requested that someone
write
a Perl version at some point.
=head3 L<why no negative (auto reversed) ranges?|http://groups.google.com/group/perl.perl6.language/browse_frm/thread/2bc40adc2da06803/f7abefdbc439c909#f7abefdbc439c909>
TSa noted that S03 explicitly disallows auto-reversed ranges and asked
why that was the case. Larry Wall noted that to date, nobody wanted it.
=head3 L<where will we die to?|http://groups.google.com/group/perl.perl6.language/browse_frm/thread/7607e99b31ede3a3/cac325353528d842#cac325353528d842>
Yuval Kogman brought up a Catalyst problem debugging the eventual
location of a die within a cascade of evals. He suggested that Perl
6 should make it easier to trace an exception. Larry Wall asked how
this could be done without impacting performance, and Yuval clarified
his request.
=head3 L<UNIX commands: chmod|http://groups.google.com/group/perl.perl6.language/browse_frm/thread/cac2611cbfad8517/5efb19535e64cbd5#5efb19535e64cbd5>
Gabor Szabo had a proposal for some alterations to C<chmod>. There was
discussion on his suggestions.
=head2 Acknowledgments
examples/qotw/009r/words.spel view on Meta::CPAN
381038113812381338143815381638173818381938203821382238233824382538263827382838293830carton
cartoon
cartridge
cartwheel
Caruso
carve
carven
caryatid
Casanova
casbah
cascade
cascara
case
casebook
casein
casework
Casey
cash
cashew
cashier
cashmere
misc/pX/Common/xquery/grammar.dtd view on Meta::CPAN
223224225226227228229230231232233234235236237238239240241242243
action -> State stack action.
-->
<!ELEMENT g:transition (g:description?, (g:tref | g:transition-
default
)+)>
<!ATTLIST g:transition
if
IDREFS
#IMPLIED
next
-state IDREF
#IMPLIED
action CDATA
#IMPLIED
>
<!--=================== Parser Production Specifications ===============-->
<!-- A production that defines a
"cascade"
of productions that define
operator precedence.
name -> the ID of the production.
if
-> space separated list of tokens
for
conditional processing.
-->
<!ELEMENT g:exprProduction (g:level+)>
<!ATTLIST g:exprProduction
name ID
#REQUIRED
if
IDREFS
#IMPLIED
node-type CDATA
#IMPLIED
condition CDATA
#IMPLIED
src/Pugs/Prim.hs view on Meta::CPAN
596597598599600601602603604605606607608609610611612613614615616op1
"log10"
= op1Cast (VNum . logBase 10)
op1
"from"
= op1Cast (castV . matchFrom)
op1
"to"
= op1Cast (castV . matchTo)
op1
"matches"
= op1Cast (VList . matchSubPos)
op1
"gather"
= \v ->
do
evl <- asks envEval
evl (Syn
"gather"
[Val v])
op1
"Thread::yield"
= const $
do
guardSTM . unsafeIOToSTM $ yield
return
$ VBool True
op1
"DESTROYALL"
= \x -> cascadeMethod id
"DESTROY"
x VUndef
-- [,] is a noop -- It simply returns the input list
op1
"prefix:[,]"
=
return
op1
"prefix:$<<"
= op1SigilHyper SScalar
op1
"prefix:@<<"
= op1SigilHyper SArray
op1
"prefix:%<<"
= op1SigilHyper SHash
op1
"prefix:&<<"
= op1SigilHyper SCode
op1
"Code::assoc"
= op1CodeAssoc
op1
"Code::name"
= op1CodeName
op1
"Code::arity"
= op1CodeArity
op1
"Code::body"
= op1CodeBody
src/Pugs/Prim.hs view on Meta::CPAN
708709710711712713714715716717718719720721722723724725726727728729handleExitCode :: ExitCode -> Eval Val
handleExitCode exitCode =
do
glob
<- askGlobal
errSV <- findSymRef (cast
"$!"
)
glob
writeRef errSV $ case exitCode of
ExitFailure x -> VInt $ toInteger x
ExitSuccess -> VUndef
return
(VBool $ exitCode == ExitSuccess)
cascadeMethod :: ([VStr] -> [VStr]) -> VStr -> Val -> Val -> Eval Val
cascadeMethod f meth v args =
do
typ <- evalValType v
pkgs <- fmap f (pkgParents $ showType typ)
named <- case args of
VUndef ->
return
Map.empty
VType{}->
return
Map.empty
_ ->
join
$ doHash args hash_fetch
-- Here syms is a list of (sym, tvar) tuples where tvar is the physical coderef
-- The monad in the
"do"
below is List.
syms <- forM pkgs $ \pkg ->
do
src/Pugs/Prim.hs view on Meta::CPAN
109610971098109911001101110211031104110511061107110811091110111111121113111411151116
sz <- fetchSize
let len =
if
len
' < 0 then if sz > 0 then (len'
`mod` sz)
else
0
else
len'
op4
"splice"
x y (castV (sz - len)) (VList [])
op2
"sort"
= \x y ->
do
xs <- fromVals x
ys <- fromVals y
op1
"sort"
. VList $ xs ++ ys
op2
"IO::say"
= op2Print hPutStrLn
op2
"IO::print"
= op2Print hPutStr
op2
"printf"
= op3
"IO::printf"
(VHandle stdout)
op2
"BUILDALL"
= cascadeMethod
reverse
"BUILD"
op2
"Pugs::Internals::install_pragma_value"
= \x y ->
do
name <- fromVal x
val <- fromVal y
idat <- asks envInitDat
idatval <- liftSTM $ readTVar idat
--trace (
"installing "
++ name ++
"/"
++ (show val)) $
return
()
let prag = initPragmas idatval
liftSTM $ writeTVar idat idatval{initPragmas =
MkPrag{ pragName=name, pragDat=val } : prag }
return
(VBool True)
t/operators/filetest.t view on Meta::CPAN
798081828384858687888990919293949596979899close
$fh
;
#if $*OS eq any <MSWin32 mingw msys cygwin> {
# skip 1, "-z is not working on Win32 yet"
#}
#else {
ok -z
"empty_file"
,
"-z returns true for an empty file"
;
#}
unlink
"empty_file"
;
# Stacked filetests
# L<S03/Changes to Perl 5 operators/"just cascade tests">
ok -e -d -r
"t"
,
"stacking of filetest operators (1)"
;
ok -e -f -r $
*PROGRAM_NAME
,
"stacking of filetest operators (2)"
;
ok not -e -f -r
"doesnotexist.t"
,
"stacking of filetest operators (3)"
;
# This one should return false *all the time* (-f and -d are mutually
# exclusive):
ok not -e -f -d
"t"
,
"stacking of filetest operators (4-1)"
;
ok not -e -f -d
"doesnotexist.t"
,
"stacking of filetest operators (4-2)"
;
ok not -e -f -d
"pugs"
,
"stacking of filetest operators (4-3)"
;
# L<S03/Changes to Perl 5 operators/"put the value in a variable">
my
$sb
= -e
"t"
;
t/syntax/interpolation/strings.t view on Meta::CPAN
272829303132333435363738394041424344454647is(
"Wont you take me to &func()"
,
'Wont you take me to func-y town'
,
'closure interpolation'
);
is(
"2 + 2 = { 2+2 }"
,
'2 + 2 = 4'
,
'double quoted closure interpolation works'
);
is(
"&func() is where I live"
,
'func-y town is where I live'
,
"make sure function interpolation doesn't eat all trailing whitespace"
);
# L<S02/Names and Variables /except when interpolating/>
is(
"&func. () is where I live"
,
'&func. () is where I live'
,
'"&func. ()" should not interpolate'
);
is(
"&func_w_args("
foo
","
bar
"))"
,
'[foo][bar])'
,
'"&func_w_args(...)" should interpolate'
);
# L<S02/"Literals" /"In order to interpolate the result of a method call">
is(
"$world.chars()"
,
'5'
,
'method calls with parens should interpolate'
);
is(
"$world.chars"
,
'World.chars'
,
'method calls without parens should not interpolate'
);
is(
"$world.reverse.chars()"
,
'5'
,
'cascade of argumentless methods, last ending in paren'
);
is(
"$world.substr(0,1)"
,
'W'
,
'method calls with parens and args should interpolate'
);
# Single quotes
# XXX the next tests will always succeed even if '' interpolation is buggy
is(
'Hello $world'
,
'Hello $world'
,
'single quoted string interpolation does not work (which is correct)'
);
is(
'2 + 2 = { 2+2 }'
,
'2 + 2 = { 2+2 }'
,
'single quoted closure interpolation does not work (which is correct)'
);
is(
'$world @list[] %hash{} &func()'
,
'$world @list[] %hash{} &func()'
,
'single quoted string interpolation does not work (which is correct)'
);
# Corner-cases
is(
"Hello $world!"
,
"Hello World!"
,
"! is not a part of var names"
);
( run in 0.532 second using v1.01-cache-2.11-cpan-e5176c747c2 )