首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Haskell

Haskell是一种标准化的、通用纯函数式编程语言,有非限定性语义和强静态类型,在Haskell中,函数是一等公民。...Haskell每一个函数都非常颗粒度,来解决很小的问题,如果我们无法理解这种很小的颗粒度,根本很难从小组合到强大的处理流程。是的,这就是Haskell。...(注明:本文不是投资建议,仅仅是从Haskell引发出来的Cardano项目) 是的,Cardano就是用Haskell来编写的,(我这样的渣渣也仅仅是阅读和学习)Haskell的用户大部分都是教授或者是数学领域的牛人...回归语言Haskell,函数式的编程其实有一点上,大家都很清楚,用很少的代码来完成一件事情。Haskell还可以定义跟数学的过程一一对应,这就很有意思了。...我们知道计算机学科其实也是一门数学学科,你想想,能跟数学的过程一一对应的语言,在研究领域,得多牛逼。

82930
您找到你想要的搜索结果了吗?
是的
没有找到

Monad_Haskell笔记10

P.S.关于computation context的详细信息,见Functor与Applicative_Haskell笔记7 用来解决context相关计算中的另一个场景:怎样把一个具有context的函数应用到具有...,因为默认所有的小写字母类型参数都是任意的: In Haskell, any introduction of a lowercase type parameter implicitly begins with...return (n,ch)) -- 加括号完整版 ([1, 2] >>= (\n -> (['a','b'] >>= (\ch -> return (n,ch))))) 函数体没界限就匹配到最右端,相关讨论见Haskell...Lambda and operator P.S.另外,如果不确定表达式的结合方式(不知道怎么加括号)的话,有神奇的方法,见How to automatically parenthesize arbitrary haskell...,应对一些通用场景,比如错误处理,I/O,不确定结果数量的计算等等,其存在意义是:比Applicative更灵活,允许在每一步计算中添加控制,像Linux管道一样 参考资料 Monad The forall

70850

newtype_Haskell笔记8

Applicative实现,所以造出了ZipList,让它以拉链结对的方式实现Applicative P.S.这里提到的是Applicative类定义的行为,具体见Functor与Applicative_Haskell...除此之外,就与data关键字没什么区别了 P.S.关于值构造器与参数,见类型_Haskell笔记3 三.对比type和data 关键字 作用 应用场景 data 定义自己的(数据)类型 想要定义完全新的类型...Haskell中大多数计算都是惰性的(少数指的是foldl'、Data.ByteString之类的严格版本),也就是说,计算只在不得不算的时候才会发生 惰性计算一般看起来都很符合直觉(不需要算的就先不算...),但特殊的是,类型相关的场景存在隐式计算(不很符合直觉) undefined undefined表示会造成错误的计算: > undefined *** Exception: Prelude.undefined...,Tuple明明只有一个值构造器(不需要“看应该用Tuple的哪个值构造器”): data () = () 我们知道没必要去检查应该用Tuple的哪个值构造器,但Haskell不知道,因为按照约定,data

59830

基础语法_Haskell笔记1

一.简介 Haskell是一种纯函数式语言(purely functional programming language),其函数式特性的纯度没有争议 命令式语言要求你提供求解的步骤,Haskell则倾向于让你提供问题的描述...即函数仅用来求值,没有副作用(不会影响外部状态),相同输入总能得到相同的输出 惰性求值:真正需要值的时候才现算,所以此时的一连串计算(函数调用)只是作用于输入数据的一系列变换公式,具体来看就是array.map...函数默认都是柯里化的,都只接受一个参数: In Haskell, all functions are considered curried: That is, all functions in Haskell...Fractional a => a -> a 其中,(/ 2)是对(/) :: Fractional a => a -> a -> a函数的不全调用(partially applied),所以没有得到计算结果...注意,++操作会遍历左边的List,所以性能不高 :左端插入: > 0 : [1, 2, 3] [0,1,2,3] 另外,[1, 2, 3]实际上是1 : 2 : 3 : []的语法糖,:右结合得到完整

1.8K30

闲话高性能计算

与此相比,高性能计算似乎一直很热,又一直离我们很远。...说高性能计算一直很热,是因为从天河超级计算机开始,中国就加入了超级计算机的全球军备竞赛,年年争夺超算世界冠军;说离我们远,是因为我们在日常的工作生活中见识超级计算机的机会并不多。...,高性能计算又频繁被提及,变成了一个热门话题。...不一样的高性能计算  如今被频繁提及的高性能计算和传统的HPC已经大不相同了。包括AI、生命科学、计算化学家等技术的突飞猛进无疑凸显了对计算力的强烈需求,从而推动了HPC的发展和变化。...如果把这些还在不断积累的数据看做金矿(真的是金矿),那大量的计算就是挖掘金矿的工具,更高性能计算能力就是现代化金矿挖掘机!

73940

Functor与Applicative_Haskell笔记7

所以,别叫盒子了,叫计算语境,fmap相当于对这个计算语境追加一层转换(做映射) Lifting 再看一遍fmap的类型定义: fmap :: Functor f => (a -> b) -> f a...->) r部分 二.Functor laws 之前有提到: 实现Functor时需要遵循一些规则,比如不希望List元素顺序发生变化,希望二叉搜索树仍保留其结构性质等等 (摘自深入typeclass_Haskell...我们知道Functor圈定了一类能被map over的东西,可以对着Functor实例用fmap,把普通函数作用于Functor的计算语境 似乎足够强大了,但有些特殊场景,例如: > :t fmap (...,像是I/O计算,non-deterministic的计算,有可能失败的计算等等。...getLine 相当优雅,让Functor层面的运算与普通运算在形式上几乎没什么差异了(从形式上消除了运算所处context的差异) 参考资料 Lifting What is “lifting” in Haskell

56530
领券