Perl6 is a new language, not a improved version of Perl5.

Perl6 inherits many good features from many languages, like Python, Perl5, Ruby, ...

Since so many Perl6 functions has been appended to Perl5 as features, and almost all methods has a subroutine form(in a more Perl5 way).

A load of subroutines and classes have been added in Perl6, which means you must remember them if you want to use.

数字类型 in Perl6



绿色的是 role, 橘黄色的是 class in Perl6

Perl6 提供的数字类型概全了整个数字的各个分类

Numeric, Real, Rational

Complex, Num, Rat, FatRat, Int

ComplexStr, NumStr, RatStr, IntStr

纯数字类型

Complex 是虚数/复数

Num是实数

Rat 是有理数

Int 是整数

这些基础类型都 immutable

a+bi #用 i 来表示虚位
COMPLEX.re #返回实部
COMPLEX.im #返回虚部
COMPLEX.reals #返回实部虚部 List
COMPLEX.polar #返回极坐标系的实部虚部 List
#---
.floor .ceiling .round .truncate
#truncate 去掉小数部分,只保留整数
#---
COMPLEX.abs # sqrt(($z.re)² + ($z.im)²)
COMPLEX.conj # 例如 1-4i 返回 1+4i
#---
.gist .perl

FatRat

有理数,arbitrary precicion,不会丢失精度

FatRat.new($numerator,$denominator)
INT.FatRat
RAT.FatRat
#上面的都可以得到 FatRat 数据类型
$z.numeritor #返回分子
$z.denominator #返回分母
$z.nude #返回分子分母 List
$z.norm #约分到最小
#公约数只有1的两个整数/自然数,叫做互质 coprime
$z.base-repeating($base)
#返回一个 list of 2 Strs,分别是小数的`整数部分`,和`小数部分`。如果除不尽,保留 $base 位

Int

:16<BEFF> #十六进制
0xBEFF
:8<377> #八进制
0o377
:2<11111111> #二进制
0b121111111
#不论进制,都可以用下划线分
#-----------
INT.chr
INT.unival
INT.expmod(POWER,MODULUS) #(INT ^ POWER) % MODULUS
INT.polymod(LIST) #分别递次取余数
#不止可以是 Int,Rat,Real也可以
# LIST 中的第一个取余之后的商,作为第二次的被除数,依次...
#可以方便地把秒 转换成 年月天时分秒
#-----------
INT.is-prime
INT.lsb #返回数字的二进制形式最右端(lower)为1的index
INT.msb #返回数字的二进制形式最左端(higher)为1的index
# from Real
Rat rand sign round floor ceiling truncate
INT.base($n,$digit) #转换未$n进制,$digit小数位
#$n 必须在2到36, 返回字符串
#因为数字加字母总共就10+26=36位,不然无法表示了

Num

is Cool does Real

double precision

immutable

Rat

is Cool does Rational

你写的有小数点的数都是有理数,因为你不可能写出带点的无理数来。默认都是 Rat 类型


数字字符串杂合体

就是某个类型的数字和 Str 的杂合体,都是Str (ComplexStr, NumStr, RatStr, IntStr)这样的。用作数字的时候是数字,用作字符串的时候是 Str。都必须 *Str.new($i, $s)这样定义。第一个参数是对应的数值,第二个是字符串。\(i 部分是对应的数字类型,\)s 是一个字符串类型的,而且\(i,\)s 都是必须指定的。

而对应的
Str 类型的是字符串和对于类型 bless到一起的,由两部分组成。可以分别提取这两部分。

ComplexStr

is Complex is Str,也就是说你把他当 Complex 用,它会调用.Numeric方法返回数字部分,你把它当字符串,它就使用字符串的部分返回。所有的*Str 类型的数字字符串杂种都基本一样。

ComplexStr.new($i, $s)
$z.Numeric #当你把 ComplexStr 类型的时候,调用
$z.Complex #返回数字部分
$z.Str #返回字符串部分
$z1 cmp $z2 #True 如果$i,$s 的顺序和值都一样

NumStr

NumStr.new($i,$s)
.Num .Str
.Numeric #在数字环境下调用
$z1 cmp $z2 #先比对$i.再$s

RatStr

RatStr.new($i,$s)
.Rat .Str .Numeric
$z1 cmp $z2

IntStr

Int.new($i,$s)
.Int .Str .Numeric
$z1 cmp $z2

Role 角色

Numeric

.Real .Int .Rat .Num
.narrow #自动把数字转换成最小的能容纳的类型
.log .log10
NUM.exp($base) #默认base是e,如果不指定的话
NUM.roots($n) #取根号
.abs .sqrt .conj
#----
.succ .pred #Str 也有这个方法,自加自减,但不局限与数字
#对于命名太方便了

Real

.Rat($epsilon) #epsilon 定义精度, 把 Real 类型转成 Rat 类型
.rand .sign .round .floor .ceiling .truncate
.base($base, $digits) #各种进制的转换

Rational

Rational.new($n,$d)
.numerator .denominator .nude
.norm .bash-repeating($base)
#和 FatRat 一样的方法

Backup: Numbers in Perl6的更多相关文章

  1. Backup: Array in Perl6

    Array in Perl6 继承List,而List又继承Iterable,Positional,Cool ARRAY.pop ARRAY.shift ARRAY.push: VALUES ARRA ...

  2. Backup: Date and Time in Perl6

    时间 Date #Operators ==, <, <= , >, >=, !=, eq, lt, le # Methods $date = Date.new(YEAR, MO ...

  3. Backup: Flow Control in Perl6

    Control Flow 注意空格,注意空格,注意空格 和 Perl5不同的是,这些结构都可以返回值,而且即使倒置结构也可以用 block 了 block 可以有逗号 with without orw ...

  4. URAL 2030 Awesome Backup System

    Awesome Backup System Time limit: 2.0 secondMemory limit: 64 MB It is known that all people can be d ...

  5. RMAN BACKUP

    转自 RMAN BACKUP backup terminology Using the RMAN BACKUP Command to Create Backups Server-Managed Con ...

  6. Subversion Backup and Restore

    Backup Specified Revision Backup specified revision (here is 20): $ cd /opt/svnRepo $ svnadmin dump ...

  7. Java 位运算2-LeetCode 201 Bitwise AND of Numbers Range

    在Java位运算总结-leetcode题目博文中总结了Java提供的按位运算操作符,今天又碰到LeetCode中一道按位操作的题目 Given a range [m, n] where 0 <= ...

  8. backup log is terminating abnormally because for write on file failed: 112(error not found)

    昨天遇到一个案例,YourSQLDba做事务日志备份时失败,检查YourSQLDba输出的错误信息如下: <Exec> <ctx>yMaint.backups</ctx& ...

  9. POJ 2739. Sum of Consecutive Prime Numbers

    Sum of Consecutive Prime Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20050 ...

随机推荐

  1. toggle笔记

    <!DOCTYPE html> <!-- saved from url=(0040)http://v3.bootcss.com/examples/carousel/ --> & ...

  2. 测试环境下将centos6.8升级到centos7的操作记录(转)

    在测试环境下安装openstack,由于在centos6下安装openstack,针对源的问题有很多,安装起来很不顺利! 但是在centos7下安装却很顺利,所以考虑将服务器由centos6升级到ce ...

  3. java中的、标识符、运算符以及数据类型之间的转换。

    ---恢复内容开始--- 数据类型之间的转换: 1:自动转换:就是不用说出要转换成什么类型,由java中的虚拟机自动将小数据类型转换成大数据类型,但大数据中的数据精度有可能被破坏. 2:强制转换:强制 ...

  4. Java基础之访问文件与目录——测试文件或目录的路径(TryPath)

    控制台程序,测试文件或目录的路径. import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.FileSy ...

  5. Leetcode: Binary Watch

    A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the bottom ...

  6. JavaBean 动作元素事例

    JavaBean.jsp JavaBeanSuccess.jsp Type类 效果

  7. JS,CSS,HTML制作网页首页,视频轮播,隐藏点击等等。

    在整个项目中,总共写了1000+的代码,可以更加简单优化的.整个主页交互效果能基本,包括轮播,视频,点击变化形状,移入蒙版,瀑布流加载滑动,旋转等等.轮播导航没有完全做完,暂时做了往右无限推动.个人觉 ...

  8. bzoj4137 [FJOI2015]火星商店问题

    比较容易想到的做法是线段树套字典树,修改操作时在字典树上经过的节点维护一个最近被访问过的时间,这样询问操作只经过满足时间条件的节点,时间复杂度O(NlogN^2)但是因为线段树每个节点都要套个字典树, ...

  9. firefox中 checkbox属性checked="checked"已有,但复选框却不显示打钩的原因

    最近在调试复选框的应用,在ie没有问题,考虑到兼容性,试试了firefox,遇到了问题. 复选框绑定了click事件,点一次选中,再点击取消选中,依次类推.这个功能在ie中没问题,但是在firefox ...

  10. 关于C# winform 快速制作不规则边框的方法

    今天逛博客园突然发现一个帖子写的   快速建立不规则边框的方式 突然发现以前自己用API的方式好傻… 杀鸡焉用牛刀  下边是从网上不断转载的 原帖: 地址:http://www.cnblogs.com ...