不存在“无中生有”,物理学家寻找基本粒子,我们即是上帝,数学家用定义和公理确定这些“基本例子”。下面我来总结一下Haskell里面最Basic的基本粒子。
Bool
-- |The 'Bool' type is an enumeration. It is defined with 'False'
-- first so that the corresponding 'Prelude.Enum' instance will give
-- 'Prelude.fromEnum' 'False' the value zero, and
-- 'Prelude.fromEnum' 'True' the value 1.
data Bool = False | True deriving (Eq, Ord)
-- Read in GHC.Read, Show in GHC.Show
Ordering
-- | Represents an ordering relationship between two values: less
-- than, equal to, or greater than. An 'Ordering' is returned by
-- 'compare'.
data Ordering = LT | EQ | GT deriving (Eq, Ord)
-- Read in GHC.Read, Show in GHC.Show
Char
{-| The character type 'Char' is an enumeration whose values represent
Unicode (or equivalently ISO\/IEC 10646) characters
(see <http://www.unicode.org/> for details).
This set extends the ISO 8859-1 (Latin-1) character set
(the first 256 charachers), which is itself an extension of the ASCII
character set (the first 128 characters).
A character literal in Haskell has type 'Char'.
To convert a 'Char' to or from the corresponding 'Int' value defined
by Unicode, use 'Prelude.toEnum' and 'Prelude.fromEnum' from the
'Prelude.Enum' class respectively (or equivalently 'ord' and 'chr').
-}
data Char = C# Char#
-- We don't use deriving for Eq and Ord, because for Ord the derived
-- instance defines only compare, which takes two primops. Then
-- '>' uses compare, and therefore takes two primops instead of one.
Int
data Int = I# Int#
-- ^A fixed-precision integer type with at least the range @[-2^29 .. 2^29-1]@.
-- The exact range for a given implementation can be determined by using
-- 'Prelude.minBound' and 'Prelude.maxBound' from the 'Prelude.Bounded' class.
Integer
-- | Arbitrary-precision integers.
data Integer
= S# Int#
-- small integers
#ifndef ILX
| J# Int# ByteArray#
-- large integers
#else
| J# Void BigInteger
-- .NET big ints
foreign type dotnet "BigInteger" BigInteger
#endif
Float
-- | Single-precision floating point numbers.
-- It is desirable that this type be at least equal in range and precision
-- to the IEEE single-precision type.
data Float = F# Float#
Double
-- | Double-precision floating point numbers.
-- It is desirable that this type be at least equal in range and precision
-- to the IEEE double-precision type.
data Double = D# Double#
Basic Monads(有些不合时宜,先放在这里)
IO Monad
{-|
A value of type @'IO' a@ is a computation which, when performed,
does some I\/O before returning a value of type @a@.
There is really only one way to \"perform\" an I\/O action: bind it to
@Main.main@ in your program. When your program is run, the I\/O will
be performed. It isn't possible to perform I\/O from an arbitrary
function, unless that function is itself in the 'IO' monad and called
at some point, directly or indirectly, from @Main.main@.
'IO' is a monad, so 'IO' actions can be combined using either the do-notation
or the '>>' and '>>=' operations from the 'Monad' class.
-}
newtype IO a = IO (State# RealWorld -> (# State# RealWorld, a #))
Maybe Monad
-- | The 'Maybe' type encapsulates an optional value. A value of type
-- @'Maybe' a@ either contains a value of type @a@ (represented as @'Just' a@),
-- or it is empty (represented as 'Nothing'). Using 'Maybe' is a good way to
-- deal with errors or exceptional cases without resorting to drastic
-- measures such as 'error'.
--
-- The 'Maybe' type is also a monad. It is a simple kind of error
-- monad, where all errors are represented by 'Nothing'. A richer
-- error monad can be built using the 'Data.Either.Either' type.
data Maybe a = Nothing | Just a
deriving (Eq, Ord)
Either Monad
{-|
The 'Either' type represents values with two possibilities: a value of
type @'Either' a b@ is either @'Left' a@ or @'Right' b@.
The 'Either' type is sometimes used to represent a value which is
either correct or an error; by convention, the 'Left' constructor is
used to hold an error value and the 'Right' constructor is used to
hold a correct value (mnemonic: \"right\" also means \"correct\").
-}
data Either a b = Left a | Right b deriving (Eq, Ord )
分享到:
相关推荐
资源来自pypi官网。 资源全名:plone.app.iterate-1.0a1.2-py2.4.egg
资源分类:Python库 所属语言:Python 资源全名:plone.app.iterate-1.0b1.1-py2.4.egg 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
iterate-clojure-workshop12 或者,将其解压缩到某处并输入。 要准备好您需要的所有工具,请执行附加的脚本(如果您已经安装了 Leiningen 或 Catnip,您可能需要检查/修改它): bash$ source prepare_all.sh # Note...
标题中的"plone.app.iterate-1.0a1.2.tar.gz"是一个Python库的压缩包文件,属于Plone生态的一部分。Plone是一个开源的内容管理系统(CMS),它基于Zope应用服务器,广泛用于构建企业级网站、内网、知识管理和协作...
-v $( pwd ) /src:/home/iterate/application/src \ iterate/summer-class:latest CRA沸腾板 该项目是通过引导的。 您将在下面找到一些有关如何执行常见任务的信息。 您可以在找到本指南的最新版本。 目录 可用...
修补(http://www.cl-user.net/asp/libs/iterate)迭代以允许(iter(:for从1到10)(:collect i))而不是(iter(for i从1到10)(收集我))
给定一个对象数组: class Company attr_accessor :name, :size def initialize(name, size) @name = name @size = size end end companies = [ Company.new('Alpha', 30), Company.new('Beta', 300), ...
Struts-Logic Iterate标签是Apache Struts框架中的一个重要组件,用于在JSP页面中迭代集合对象,如数组、列表或Map。这个标签提供了一种简洁的方式来遍历数据,并且可以与Struts的其他标签(如`bean:write`)配合...
npm install iterate-until bower install iterate-until 用法 var iterateUntil = require ( 'iterate-until' ) ; function addTwo ( i ) { return i + 2 ; } function isLessThanEight ( n ) { return n < 8...
在iBatis中,`<iterate>`标签是一个非常实用的功能,它允许我们处理集合数据,如数组、List或Map等,进行循环遍历并生成动态SQL语句。下面我们将详细探讨`<iterate>`标签的用法及其示例。 `<iterate>`标签的主要...
在`struts`的标签库中,`logic:iterate`是一个非常重要的标签,用于遍历集合对象,如`List`、`Map`或数组,并对每个元素执行循环操作。 `logic:iterate`标签的主要属性包括: 1. `id`: 用于给循环中的当前元素创建...
You can learn how to iterate through characteristics of all the cameras attached to the device, display a camera preview, and take pictures. Introduction The Camera2 API provides an interface to ...
### logic:iterate 标签详解 #### 一、概述 `logic:iterate` 是 Struts 标签库中的一个重要组成部分,主要用于在 JSP 页面中循环遍历集合对象(如 List、Array 或 Map 等)。它能够有效地帮助开发者在前端展示动态...
标题中的“ibatis<iterate>标签”指的是在iBATIS框架中用于动态SQL的一个关键功能。iBATIS是一个优秀的持久层框架,它允许将SQL语句直接嵌入到Java代码中,简化了数据库操作。而`<iterate>`标签是iBATIS提供的一个...
今天我们将探讨的是Hibernate的二级缓存,特别是`list`和`iterate`方法的区别,这对于优化数据库访问性能至关重要。 一级缓存是Hibernate内置的,它是Session级别的缓存,自动管理实体对象的生命周期。然而,一级...
Iterate是Bravais-lattice-finding算法的实现,该算法来自:Andrews和Bernstein,Acta Cryst。 (1988)。 A44、1009-1018晶格和精简细胞作为6空间中的点,并通过投影选择了Bravais晶格类型。
# All categories (/pandas) | # Import, version (/pandas/import-version)...# Iterate over data (/pandas/iterate-over-data) | # Aggregate data (/pandas/aggregate-data) | # Save & Load (/pandas/save-load) |
jsp脚本和<logic:iterate>标签:实现循环和分支逻辑 jsp脚本和<logic:iterate>标签:实现循环和分支逻辑 jsp脚本和<logic:iterate>标签:实现循环和分支逻辑
var iterate = require ( 'random-iterate' ) var ite = iterate ( [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] ) console . log ( ite ( ) ) // maybe 4 console . log ( ite ( ) ) // maybe 9 . . . 7 more time . . ...