首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏子曰五溪

    Haskell

    Haskell是一种标准化的、通用纯函数式编程语言,有非限定性语义和强静态类型,在Haskell中,函数是一等公民。 ghc包含了三个主最要的部分: ghc 编译器 ghci 交互式解析器和调试器 runghc 以脚本的方式运行Haskell 而我们即将学习的起点就是在ghci中来练习Haskell的基本语法。 Haskell每一个函数都非常颗粒度,来解决很小的问题,如果我们无法理解这种很小的颗粒度,根本很难从小组合到强大的处理流程。是的,这就是Haskell。 (注明:本文不是投资建议,仅仅是从Haskell引发出来的Cardano项目) 是的,Cardano就是用Haskell来编写的,(我这样的渣渣也仅仅是阅读和学习)Haskell的用户大部分都是教授或者是数学领域的牛人 回归语言Haskell,函数式的编程其实有一点上,大家都很清楚,用很少的代码来完成一件事情。Haskell还可以定义跟数学的过程一一对应,这就很有意思了。

    1.3K30发布于 2019-06-24
  • 来自专栏note

    Haskell doctest

    Haskell 的 doctest 非常有用。 一定要注意格式 第一行很重要,-- |这行没有就不是一个 test。

    51210编辑于 2022-05-20
  • 来自专栏我的独立博客

    Haskell 基础

    Prelude> doubleMe 10 20 tip: 如果修改doubleMe.hs文件需要重新导入的话可以执行:reload doubleMe.hs或者:r doubleMe.hs重新导入 if语句 Haskell 中的if语句与其他语言不同,else是不可以省略的 doubleSmallNum x = if x > 10 then x else x * 2 Haskell 中的 if 语句的另一个特点就是它其实是个表达式 1 2 上面的例子就是从列表l中取下标为1的元素 list可以用来装list: Prelude> let l = [[1,2,3], [1,2,3,4], [1,2,3,4,5]] haskell不要求每个元素的长度一致 [1,2,3] [3,2,1] Prelude> take 2 [1,2,3] [1,2] Prelude> 1 `elem` [1,2,3] True Range 可以用列表符号来表示一系列元素,haskell

    57710编辑于 2024-09-02
  • 来自专栏我的日常崩溃

    haskell 求助

    我刚刚开始学习haskell遇到个题目做不出来,要求写一个function.

    82540发布于 2019-12-02
  • 来自专栏云深之无迹

    Haskell Platform安装

    不懂了,明天写

    1.3K30发布于 2020-11-03
  • 来自专栏黯羽轻扬

    模块_Haskell笔记2

    Set.fromList 集合去重效率高于List.nub,但缺点是构造集合会对元素进行排序,所以得到的去重结果不保留原顺序(List.nub会保留) 参考资料 Haskell/Modules Haskell

    2.2K30发布于 2019-06-12
  • 来自专栏我的独立博客

    Haskell Type与Typeclass

    > tip: 按照其他语言中的习惯,Int,Int,Int -> Int好像看起来更为恰当一些,但实际haskell中->只有一个作用:它标识一个函数接收一个参数并返回一个值,其中->符号左边是参数的类型 haskell中所有函数都是只接收一个参数的,所有函数都是currying的。 "True" || False True 但是执行下面的代码,就会提示错误: Prelude> read "5" *** Exception: Prelude.read: no parse 这是因为haskell

    63210编辑于 2024-09-02
  • 来自专栏黯羽轻扬

    类型_Haskell笔记3

    ::读作“类型为”(has type),告诉编译器变量name是String类型(即[Char]类型)的

    1.3K40发布于 2019-06-12
  • 来自专栏刘笑江的专栏

    learn-haskell

    引言 Haskell不同于Scala,是一门纯函数式语言,它强制使用者使用函数式语法而没有妥协。 是一门强类型定义的静态类型语言。 你也能在Haskell中发现Clojure风格的惰性求值(lazyevaluation)以及与Clojure和Erlang相同的列表推导语法。 无副作用,通过monad概念保存状态:一个Haskell函数可以返回一个有副作用并且会被延迟执行的结果. Day1 逻辑 在OS X下安装Haskell环境:brew install haskell-platform 通过命令启动交互式环境:ghci 基本类型 {- basic type -} Prelude Prelude> foldl (\x carryOver -> carryOver + x) 0 [1 .. 10] 55 Prelude> foldl1 (+) [1 .. 3] 6 where {- haskell

    1.6K30发布于 2018-05-28
  • 来自专栏我的独立博客

    haskell 中的newtype

    haskell中一般使用data关键字来自定义type,像这样: data BookInfo = Book Int String [String] deriving (Show) 但有些情况下要使用newtype 如果用data的话在执行的时候会有包起来和解开来的成本,但使用newtype的话,Haskell会知道你只是要将一个type包成一个新的type,你想要内部运作完全一样只是要一个新type而已。 有了这个概念,Haskell可以将包裹和解开的成本省掉。

    85410编辑于 2024-09-02
  • 来自专栏pydata

    ubuntu 14.04 install haskell

    haskell是一种函数编程式语言,ghc是Glasgow Haskell Compiler的简称,也是Haskell Platform的基础. 的一个package,提供Haskell包安装框架,类似python的easy_install、debian的apt-get等。 cabal-install是另一个Haskell包安装库,提供了cabal命令行程序,该程序在安装新包时会自动解决包依赖关系。 下面是安装cabal的步骤 wget http://www.haskell.org/cabal/release/cabal-install-1.20.0.3/cabal-install-1.20.0.3 在安装相关haskell包的时候可能会出现broken package错误,可以通过以下命令在haskell中移除broken package ghc-pkg check --simple-output

    1.1K10发布于 2018-08-02
  • 来自专栏黯羽轻扬

    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

    1.2K50发布于 2019-06-12
  • 来自专栏note

    本地使用 Haskell CodeWorld Locally

    git executable Main hs-source-dirs: src main-is: Main.hs default-language: Haskell2010

    75430编辑于 2022-05-20
  • 来自专栏黯羽轻扬

    newtype_Haskell笔记8

    Applicative实现,所以造出了ZipList,让它以拉链结对的方式实现Applicative P.S.这里提到的<*>是Applicative类定义的行为,具体见Functor与Applicative_Haskell 除此之外,就与data关键字没什么区别了 P.S.关于值构造器与参数,见类型_Haskell笔记3 三.对比type和data 关键字 作用 应用场景 data 定义自己的(数据)类型 想要定义完全新的类型 想让类型签名更清楚(语义化)的时候 newtype 将现有的类型包成一个新的类型,得到的类型与原类型不同,不能换用/混用 想让现有类型具有一种不同的接口(typeclass)实现时 四.newtype与惰性计算 Haskell 的哪个值构造器,后者则不需要 但奇怪的是,Tuple明明只有一个值构造器(不需要“看应该用Tuple的哪个值构造器”): data () = () 我们知道没必要去检查应该用Tuple的哪个值构造器,但Haskell MyTuple a b = MyTuple {getTuple :: (a, b)} > sayHello (MyTuple _) = "hh" > sayHello undefined "hh" 确实如此,Haskell

    1K30发布于 2019-06-12
  • 来自专栏黯羽轻扬

    基础语法_Haskell笔记1

    一.简介 Haskell是一种纯函数式语言(purely functional programming language),其函数式特性的纯度没有争议 命令式语言要求你提供求解的步骤,Haskell则倾向于让你提供问题的描述 通过命令告诉电脑要做什么,比如求和是通过循环结构遍历所有的数,相加并记录其和 函数式思维:通过函数来描述出问题是什么,比如求和是把第一个数与其余树的和相加 P.S.关于思维模式的差异,请查看一场函数式思维模式的洗礼 Haskell 所以,经验原则是给所有负数字面量都带上括号,如(-3) P.S.Haskell只有一个一元运算符,就是一元减号-,具体见Unary operator 逻辑运算 3个运算符:与(&&),或(||),非(not infix),都是左结合的(infixl的l表示left associative),函数签名也相同(Num a => a -> a -> a) 优先级的范围是0-9,值越大越优先 三.函数调用 语法格式 Haskell 函数默认都是柯里化的,都只接受一个参数: In Haskell, all functions are considered curried: That is, all functions in Haskell

    2.8K30发布于 2019-06-12
  • 来自专栏Elson's web

    函数curry化(Haskell Curry)

    当一个函数fn有多个参数时,可以先传入一部分参数,生成一个中继函数nextFn,然后在nextFn当中再传入剩下的参数。(一步curry化)

    1.7K10发布于 2020-01-02
  • 来自专栏我的独立博客

    Haskell 函数语法

    guard由跟在函数名及参数后边的竖线标志,通常竖线都是靠右一个缩进排成一列。一个guard就是一个布尔表达式,如果是True,就使用对应的函数体。最后的一个guard往往是otherwise,它的定义就是简单一个otherwise = True。

    42510编辑于 2024-09-02
  • 来自专栏黯羽轻扬

    Zipper_Haskell笔记13

    6 EmptyTree (Node 7 EmptyTree EmptyTree)) (Node 9 EmptyTree EmptyTree)) (fromList及二叉搜索树的实现来自Monoid_Haskell 参考资料 Zipper Control.Zipper Control.Monad.Zipper Haskell error: Couldn’t match type ‘a’ with ‘b’

    73650发布于 2019-06-12
  • 来自专栏黯羽轻扬

    深入typeclass_Haskell笔记4

    零.Typeclass与Class Typeclass就是Haskell中的接口定义,用来声明一组行为 OOP中的Class是对象模板,用来描述现实事物,并封装其内部状态。 Constraint也是一种kind,表示必须是某类的instance(即类型约束,经常在函数签名的=>左边看到),例如Num,具体见What does has kind ‘Constraint’ mean in Haskell

    79610发布于 2019-06-12
  • 来自专栏黯羽轻扬

    Monoid_Haskell笔记9

    细分为左单位元(e * a = a)和右单位元(a * e = a),如果同时满足就称之为单位元,也称为幺元(离散数学有学过这个东西) Haskell里,也有类似的东西(被称为Monoid),比如++运算遇到 deriving (Eq, Ord, Read, Show, Bounded, Generic, Generic1, Num) P.S.关于ZipList与newtype的过往,见newtype_Haskell

    1.1K30发布于 2019-06-12
领券