- May 2024
- Sep 2023
- Jul 2023
-
wiki.haskell.org wiki.haskell.org
- Dec 2022
-
www.zhihu.com www.zhihu.com
-
函数式编程所倡导使用的「不可变数据结构」如何保证性能?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
如何评价 Meta 的代码搜索系统 Glean?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
是否可以说 Contract 和 Type Inference 模糊了静态类型和动态类型的界限?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
函数式编程是否适用于超大型项目?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
现代语言的closure是如何处理的?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
rust是不是一个no gc 的 haskell?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
类型应该是一等公民吗?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
Haskell 和 Scheme, 哪一个更适合用于生产环境?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
haskell中的callcc有什么用?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
如何写一个简单的编译器?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
Call By Need语义下如何做Partial Evaluation?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
为什么HASKELL这类语言要用代数概念描述类型的组合(ADT) 而不是看作集合去运算和组合?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
Haskell等语言中的模式匹配在C++中如何实现?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
编程语言需要哪些机制才能支持模式匹配(pattern match)?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
未来什么编程语言和开发技术会比较吃香呢?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
Lambda 表达式、Block、闭包与匿名函数之间有什么区别?和 λ 演算有什么关系?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
怎样理解 Partial Evaluation?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
如何理解 Free Monad?
Tags
Annotators
URL
-
-
-
为什么函数式语言里有recursive data type但没有recursive function type?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
类型推导是否可以理解为一种编译期计算?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
应该如何理解Profunctor?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
Call by name 的语言能模拟 call by value 吗?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
dependent type之上还有更高级的类型系统吗?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
Haskell 的 Typeclass 怎么理解?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
Higher-kinded type到底有什么用?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
Edward Kmett 的这个讲座在讲什么?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
该如何理解Monad?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
如何理解 Extensible Effects?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
如何理清 lens 这个库的各个组件,熟悉各种高级玩法?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
Haskell 的带界量化多态和 Java/C# 的接口动态委派,哪一个更有利于优化?灵活性更好?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
如何理解Haskell中的Arrow及其用途?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
怎么看待王垠对 Haskell 的评价?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
精通 Haskell 是一种怎样的体验?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
如何解释 Haskell 中的单子(Monad)?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
怎么理解“一个单子(Monad)说白了不过就是自函子范畴上的一个幺半群而已”?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
怎样用简单的语言解释 monad?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
如何理解Monad Transformer?有哪些资料可以帮助理解它?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
state monad 为什么wrap的是一个 Function ?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
为什么applicative不定义为monoid的子类?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
GHC扩展-XRankNTypes是什么?如何理解forall .?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
List的Applicative instance应该怎么写?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
Haskell 这段代码该如何理解?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
Haskell 里面的 Functor 是个什么概念?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
函数式编程和反应式编程(reactive programming)有什么区别?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
Haskell引入Applicative functor有什么意义?
Tags
Annotators
URL
-
-
www.zhihu.com www.zhihu.com
-
函数式编程如何优雅的处理很多 多个函数都要用到的 参数?
Tags
Annotators
URL
-
- Jul 2022
-
www.overcoming.software www.overcoming.software
-
Even with OverloadedRecordDot, Haskell’s records are still bad, they’re just not awful.
-
- Mar 2022
-
www.ruanyifeng.com www.ruanyifeng.com
-
软件行业中,错误的做法往往得到更多的资源。下面是两个例子: 一个公司里面,技术债务最多的团队,员工最多。 问题最多的软件库或编程语言,产生最多的话题。
Tags
Annotators
URL
-
- Feb 2021
-
mmhaskell.com mmhaskell.com
-
The IO monad wraps computations in the following context: "This computation can read information from or write information to the terminal, file system, operating system, and/or network". If you want to get user input, print a message to the user, read information from a file, or make a network call, you'll need to do so within the IO Monad. These are "side effects". We cannot perform them from "pure" Haskell code.
-
-
- Jan 2021
-
marksaroufim.substack.com marksaroufim.substack.com
-
Haskell is the best functional programming language in the world and Neural Networks are functionsThis is the main motivation behind Hasktorch which lets you discover new kinds of Neural Network architectures by combining functional operators
Haskell is a great solution for neural networks
-
- Aug 2020
-
toraritte.github.io toraritte.github.io
-
Original post is here.
This explanation should be combined with 24 Days of GHC Extensions: Rank N Types (see related hypothes.is note).
-
-
ocharles.org.uk ocharles.org.uk
-
Commonly the above definition is called the identity function. But in fact we should think of it as a whole family of functions. We should really say that id is an identity function for all types a. In other words, for every type T you might come up with, there is an identity function called id, which is of type T -> T. This is the type-checker’s view anyway, and by turning on the RankNTypes extension we can be explicit about that in our code: {-# LANGUAGE RankNTypes #-} id :: forall a. a -> a id x = x
This is such a nice description of
forall
. It should be combined withforall
is the type-level "lambda" (also saved it here). -
Now it is much clearer that id is really a family of infinitely many functions. It is fair to say that it is an abstract function (as opposed to a concrete one), because its type abstracts over the type variable a. The common and proper mathematical wording is that the type is universally quantified (or often just quantified) over a.
This was very neatly put, and
forall
above is also spot on. -
It also adds safety through a property called parametricity. If we pretend that there are no infinite loops or exceptions (it’s okay to do that, so we will do it throughout this article), then the function is actually fully determined by its type. In other words, if we see the type a -> a, we know that the corresponding value must be the identity function.
If this would be the first time I came across parametricity, I wouldn't understand what it means.
https://en.wikipedia.org/wiki/Parametricity
In programming language theory, parametricity is an abstract uniformity property enjoyed by parametrically polymorphic functions, which captures the intuition that all instances of a polymorphic function act the same way.
That is, a function with the type signature
a -> a
has only one implementation: it can only return its input. In a similar fashion,a -> b -> a
will only return the first argument and ignore the second. And so on. -
In other words you cannot choose the definition of a value based on its type (for now).
What does this mean?
-
- Jul 2020
-
Tags
Annotators
URL
-
- May 2020
-
learning.oreilly.com learning.oreilly.com
-
function (or in the case of type classes, we call these methods)
-
If you can tell that two types are equal or not equal, that type belongs in the Eq type class.
two types or rather two things of the same type?
-
-
muldoon.cloud muldoon.cloud
-
Programming languages These will probably expose my ignorance pretty nicely.
When to use different programming languages (advice from an Amazon employee):
- Java - enterprise applications
- C# - Microsoft's spin on Java (useful in the Microsoft's ecosystem)
- Ruby - when speed is more important then legibility or debugging
- Python - same as Ruby but also for ML/AI (don't forget to use type hinting to make life a little saner)
- Go/Rust - fresh web service where latency and performance were more important than community/library support
- Haskell/Erlang - for very elegant/mathematical functional approach without a lot of business logic
- Clojure - in situation when you love Lisp (?)
- Kotlin/Scala - languages compiling to JVM bytecode (preferable over Clojure). Kotlin works with Java and has great IntelliJ support
- C - classes of applications (operating systems, language design, low-level programming and hardware)
- C++ - robotics, video games and high frequency trading where the performance gains from no garbage collection make it preferable to Java
- PHP/Hack - testing server changes without rebuilding. PHP is banned at Amazon due to security reasons, but its successor, Hack, runs a lot of Facebook and Slack's backends
-
- Apr 2020
-
github.com github.com
- Mar 2020
- Feb 2020
-
reasonablypolymorphic.com reasonablypolymorphic.com
Tags
Annotators
URL
-
-
-
Nix is a purely functional package manager. This means that it treats packages like values in purely functional programming languages such as Haskell — they are built by functions that don’t have side-effects, and they never change after they have been built.
-
- Nov 2019
-
github.com github.com
-
haskell-overridez is a tool and library of nix functions that simplify the use of overrides while developing haskell projects with nixpkgs.
Tags
Annotators
URL
-
-
github.com github.comjyp/styx1
-
A nix-based Haskell project manager
-
- Jun 2019
-
owickstrom.github.io owickstrom.github.io
-
This package takes a more declarative approach, and talks about events rather than signals. Widgets emit event values, and these values can be mapped and transformed into other values as the event propagates up the tree of widgets.
So this is a bit more elm-y than it would otherwise be
-
- Apr 2019
- Mar 2019
-
hackage.haskell.org hackage.haskell.org
Tags
Annotators
URL
-
- Feb 2019
-
wiki.haskell.org wiki.haskell.org
Tags
Annotators
URL
-
-
wiki.c2.com wiki.c2.com
-
Haskell
Haskell, Keep it simple, stupid.
-- FizzBuzz module Main where import Control.Monad main :: IO () main = forM_ [1..100] $ \n -> putStrLn . concat . take 2 $ ["Fizz" | n `mod` 3 == 0] ++ ["Buzz" | n `mod` 5 == 0] ++ ["", show n]
-
- Jan 2019
-
mmhaskell.com mmhaskell.com
-
Definición de tipos de datos en Haskell y comparación con Java, Python y JavaScript.
-
- Oct 2018
-
mmhaskell.com mmhaskell.com
-
Deeper Stack Knowledge
-
- Sep 2018
-
www.imn.htwk-leipzig.de www.imn.htwk-leipzig.de
-
Alternativas en Haskell a las listas como contenedores.
-
- Apr 2018
-
typeclasses.com typeclasses.com
-
(== 10)
This confused me. I'm relatively new to Haskell and did not know about sectioning. After learning that detail, this makes sense as a (right) partial application of the
(==)
function.
Tags
Annotators
URL
-
- Jan 2018
-
byorgey.wordpress.com byorgey.wordpress.com
-
Whereas normal type classes represent predicates on types (each type is either an instance of a type class or it isn’t), multi-parameter type classes represent relations on types
-
- Oct 2017
-
www.microsoft.com www.microsoft.com
-
A History of Haskell:Being Lazy With Class
-
- Apr 2017
- Dec 2016
-
blog.haskellformac.com blog.haskellformac.com
-
FRP library
def. FRP library: Functional Reactive Programming Library
-
- Oct 2016
-
en.wikibooks.org en.wikibooks.org
Tags
Annotators
URL
-
- Jul 2016
-
bitemyapp.com bitemyapp.com
-
Saw this recommended on a Quora answer whilst looking for book and article recommendations for a newcomer to Haskell
-
- Jun 2016
-
dev.stephendiehl.com dev.stephendiehl.com
-
-
www.imada.sdu.dk www.imada.sdu.dk
-
Useful cheatsheat for Haskell operators
-
- May 2016
- Oct 2014
-
www.fpcomplete.com www.fpcomplete.com
-
foldMap :: Monoid m -> (a -> m) -> t a -> m
I'm not sure, but I think what he meant here was
foldMap :: Monoid m => (a -> m) -> t a -> m
. -
The notion behind it was that one could decompose, e.g., Applicative into an instance of the Pointed typeclass and an instance of the Apply typeclass (giving apply :: f (a -> b) -> f a -> f b) and an instance of Pointed, such that the two interact properly.
There's more on
Applicative
(andFunctor
) here, in case you're unfamiliar with it.
-