<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule">

<channel>
<title><![CDATA[Perl 6: Preludification Candidates]]></title>
<link>http://www.perlfoundation.org/perl6/index.cgi?preludification_candidates</link>
<description></description>
<pubDate>Thu, 23 Aug 2007 18:27:40 -0000</pubDate>
<webMaster>synedra@gmail.com</webMaster>
<generator>Socialtext Workspace v2.14.7.2</generator>

<item>
<title><![CDATA[Preludification Candidates]]></title>
<link>http://www.perlfoundation.org/perl6/index.cgi?preludification_candidates</link>
<description><![CDATA[<div class="wiki">
<h2 id="about_prelude_pm_in_the_pugs_repository">About Prelude.pm (in the pugs repository)</h2>
<p>
Note: This page is likely long-outdated.</p>
<p>
<tt>src/perl6/Prelude.pm</tt> contains some core functions for Perl 6...written in Perl 6. Through a bootstrapping process, it is a available at runtime in an efficient, pre-compiled form.</p>
<p>
Being able to write some of Perl 6 in a Perl 6 is a benefit it itself, but an additional benefit is that functions in Prelude.pm are automatically available to all Perl 6 implementations, helping spend of their development, and providing some consistency between them.</p>
<h2 id="hacking_on_prelude_pm">Hacking on Prelude.pm</h2>
<p>
Here's a rough shot at things that are implemented in src/Pugs/Prim.hs now and might be moved to src/perl6/Prelude.pm .</p>
<p>
Some (many) of those rely on internals support to do the actual low-level stuff, for example IO. So it's (probably) okay to split up the work to a &quot;myprim&quot; sub in the Prelude and a sister &quot;Pugs::Internals::myprim&quot; in Prim. For example, Pipe.open2 offers a simple Perl6 interface to Haskell's runInteractiveCommand.</p>
<p>
If your prim can be written efficiently in pure Perl6, that's great; by all means put it in the Prelude and mark it as such in a kwid block (FIXME: notation to be determined), so that it may be reused by non-pugsy Perl6 implementations :-)</p>
<p>
If you have an questions about hacking on Prelude.pm, please ask on <a href="http://www.perlfoundation.org/perl6/index.cgi?mail_lists_irc_archives" title="(40 months)  Perl 6 Mailing Lists and Archives The currently active Perl 6 mailing lists are at ( http www.nntp....">IRC<!-- wiki-renamed-link Mail Lists, IRC, Archives --></a></p>
<blockquote>
want<br />
bool::true<br />
bool::false<br />
time<br />
times<br />
File::Spec::cwd<br />
File::Spec::tmpdir<br />
Str::split<br />
lc<br />
uc<br />
capitalize<br />
sort<br />
reverse<br />
perl<br />
require_haskell<br />
require_parrot<br />
require_perl5<br />
eval_parrot<br />
use<br />
require<br />
eval<br />
evalfile<br />
eval_perl5<br />
eval_haskell<br />
eval_yaml<br />
Pugs::Safe::safe_print<br />
elems<br />
graphs<br />
codes<br />
chars<br />
bytes<br />
readdir<br />
slurp<br />
opendir<br />
IO::Dir::closedir<br />
IO::Dir::rewinddir<br />
IO::Dir::readdir<br />
detach *rename to Thread.detach<br />
kill *rename to Thread.kill and Process.kill<br />
join *rename to Thread.join<br />
async<br />
listen *rename to Socket.listen<br />
flush *rename to IO.flush<br />
close *rename to IO.close / make multi?<br />
chr<br />
ord<br />
hex<br />
grep<br />
map<br />
join<br />
reduce<br />
Scalar::split<br />
Scalar::as<br />
connect *Socket.connect<br />
sprintf<br />
exec *Process.exec<br />
system *Process.system<br />
chmod *File? System?<br />
index<br />
rindex<br />
substr</blockquote>
<br /><h2 id="related_pages">Related Pages</h2>
</div>
]]></description>
<author>Matthew Wilson</author>
<guid isPermaLink="true">http://www.perlfoundation.org/perl6/index.cgi?preludification_candidates</guid>
<pubDate>Thu, 23 Aug 2007 18:27:40 -0000</pubDate>
</item>

</channel>
</rss>