老尸 发表于 2015-1-16 22:20:35

ASP.NET教程之【F#2.0系列】利用F#举行算术操纵

既然话题已经抄起,我打算今晚发篇博文再引导一下舆论方向,使它再火两天,抛砖引玉,而且赵劼先生一直在跟帖,使.NET阵营的我感到万分难得。利用F#举行算术操纵  基础范例:
  范例  形貌  示例  .NET范例  bool  True/falsevalues  true,false  System.Boolean  byte  8-bitunsignedintegers  0uy,19uy,0xFFuy  System.Byte  sbyte  8-bitsignedintegers  0y, 19y,0xFFy  System.SByte  int16  16-bitsignedintegers  0s, 19s,0x0800s  System.Int16  uint16  16-bitunsignedintegers  0us,19us,0x0800us  System.UInt16  int, int32  32-bitsignedintegers  0, 19,0x0800,0b0001  System.Int32  uint32  32-bitunsignedintegers  0u, 19u,0x0800u  System.UInt32  int64  64-bitsignedintegers  0L, 19L,0x0800L  System.Int64  uint64  64-bitunsignedintegers  0UL,19UL,0x0800UL  System.UInt64  nativeint  Machine-sizedsignedintegers  0n, 19n,0x0800n  System.IntPtr  unativeint  Machine-sizedunsignedintegers  0un,19un,0x0800un  System.UIntPtr  single,float32  32-bitIEEEfloating-point  0.0f,19.7f,1.3e4f  System.Single  double,float  64-bitIEEEfloating-point  0.0,19.7,1.3e4  System.Double  decimal  High-precisiondecimalvalues  0M, 19M,19.03M  System.Decimal  bigint  Arbitrarilylargeintegers  0I, 19I  Math.BigInt  bignum  Arbitrary-precisionrationals  0N, 19N  Math.BigNum  unit  Thetypewithonlyonevalue  ()  Core.Unit
  在F#中,对数字的加减乘除操纵均是不反省的(unchecked);就是说假如超越局限,不会失掉非常。比方,2147483647是最年夜的32位整数:
> 2147483647+1;;
val it : int = -2147483648
  同时,我们也供应了反省溢出的完成:Microsoft.FSharp.Core.Operators.Checked。这个模块(module)中完成的操纵将在移除产生时抛出System.OverflowException非常。
  假如但愿制止溢出,可使用decimal,bigint和bignum范例。
  除零将会失掉System.DivideByZeroException,但浮点数(floating-pointnumber)除外,浮点数除零将会前往Infinity和-Infinity。
  经由过程范例推导(typeinference)来断定操纵符重载―假如没有重载则F#商定利用32位整数的操纵符。
  假如但愿利用指定范例的操纵符,则必需利用范例正文(typeannotation)来匡助范例推导器推导出准确的了局:
> let squareAndAdd a b = a * a + b;;
val squareAndAdd : int -> int -> int
  假如我们必要指定利用float的操纵符,只需:
> let squareAndAdd (a:float) b = a * a + b;;
val squareAndAdd : float -> float -> float
  这就是范例推导器发扬的感化。
  位(bitwise)操纵
  位操纵符:
  操纵符  形貌  举例  了局  &&&  与  0x65&&&0x0F  0x05    或  0x650x18  0x7D  ???  异或  0x65???0x0F  0x6A  ~~~  求反  ~~~0x65  0xFFFFFF9a  <<<   左移  0x01<<<3  0x08  >>>   右移  0x65>>>3  0x0C
  将一个32位整数编码成(encode)1,2,或5个字节,并用一个数字列表前往。
let encode (n: int32) =
    if   (n >= 0    && n <= 0x7F)   then [ n ]
    elif (n >= 0x80 && n <= 0x3FFF) then [ (0x80  (n >>> 8)) &&& 0xFF;
                                           (n &&& 0xFF) ]
    else  [ 0xC0; ((n >>> 24) &&& 0xFF);
                  ((n >>> 16) &&& 0xFF);
                  ((n >>> 8)  &&& 0xFF);
                   (n         &&& 0xFF) ]
  挪用:
> encode 32;;
val it : int32 list = 
 
> encode 320;;
val it : int32 list = 
 
> encode 32000;;
val it : int32 list = 
  数字范例转换
  分歧数字范例之间不会隐式转换。必需利用响应的操纵符举行显式的范例转换:
  操纵符  形貌  用法  了局  sbyte  转换为sbyte  sbyte(-17)  -17y  byte  转换为byte  byte255  255uy  int16  转换为int16  int160  0s  uint16  转换为uint16  uint1665535  65535us  int/int32  转换为int  int17.8  17  uint32  转换为uint32  uint3212  12u  int64  转换为int64  int64(-100.4)  -100L  uint64  转换为uint64  uint641  1UL  float32  转换为float32  float3265  65.0f  float  转换为float  float65  65.0
  必要注重的是,这些转换都是不反省溢出的。不会抛出非常。如必要利用溢出非常,仍是必要利用Microsoft.FSharp.Core.Operators.Checked模块下的操纵符。大概也能够利用.NET的System.Convert。但利用System.Convert会带来一些成绩,必要利用范例正文来匡助范例推导器事情。
  数字对照
  可使用的操纵符为=,,<,<=,>,>=,min和max。全都和字面的意义不异。
  必要注重的是,当对浮点数举行操纵的时分,这些操纵符完成了IEEE的NaN。任何包括NaN的对照操纵城市前往false。
以前很热炒跨平台,主要是由于硅谷挑战微软霸主地位的热情,但是冷静下来后,跨平台往往不是那么一回事。假设你有个软件,所谓的跨平台,你只需要为第二个平台上重新编译一次就行了,这样很难么?

简单生活 发表于 2015-1-17 22:18:20

主流网站开发语言之PHP:PHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。

蒙在股里 发表于 2015-1-21 10:12:58

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。

精灵巫婆 发表于 2015-1-30 14:45:46

逐步缩小出错代码段的范围,最终确定错误代码的位置。

小魔女 发表于 2015-2-6 13:28:56

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。

飘灵儿 发表于 2015-2-16 07:09:53

ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。

小妖女 发表于 2015-3-5 00:54:14

现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。

admin 发表于 2015-3-11 22:04:50

Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。

深爱那片海 发表于 2015-3-19 15:06:45

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

只想知道 发表于 2015-3-28 17:52:55

在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
页: [1]
查看完整版本: ASP.NET教程之【F#2.0系列】利用F#举行算术操纵