抽认卡
作者:David Romano
使用抽认卡学习外语词汇。
源代码:flashcard.p6
#!/usr/bin/env perl6 use v6; my %table = (:context => (), :text => (), :link => (), :item => (), :group => ()); # item => ({ text => @text[0], context => %table{'context'}[0], score => 0 # },...) # group = ({ 'link' => 1, itemA => item[0], itemB => item[1] } ); sub add-to-array ( $name, *@values, :$debug = 1) { %table{$name}.push(@values); if $debug { say "$name is now <{%table{$name}.[]}>"; } } my $name = 'context'; add-to-array(<context>, <English French Latin> ); add-to-array(<text>, <hello bonjour salve> ); add-to-array(<link>, <idiom translation> ); sub list-context { for %table<context>.[] { .say; } } list-context; # add-item: text_id-text_id context_id-context_id sub add-item () { } # add-group item_id-item_id link_id sub add-group () { } # question: can there be multiple links between the same two items? multiple # contexts for an item? The reason I'm pondering this is that for the example # above, it might make sense to have the link be a list (idiom, translation) # rather than just simply 'idiom'. The ordering of the list should count, so # that it's a 'translation' _of_ 'idiom', but I dunno. Are links and contexts # really just the same? No, that's a good separation. Well, for now I can keep # them as scalars and make them lists if I want to later.