相关疑难解决方法(0)

为什么我们需要monad?

我谦虚地看到着名问题"什么是单子?"的答案.,特别是投票最多的人,试着解释什么是monad而没有明确解释为什么monad真的是必要的.他们可以解释为问题的解决方案吗?

monads haskell

358
推荐指数
7
解决办法
5万
查看次数

函数式编程语言如何工作?

如果函数式编程语言不能保存任何状态,他们如何做一些简单的事情,比如从用户那里读取输入?他们如何"存储"输入(或存储任何数据?)

例如:这个简单的C语言如何转换为像Haskell这样的函数式编程语言?

#include<stdio.h>
int main() {
    int no;
    scanf("%d",&no);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

(我的问题受到了这篇优秀文章的启发:"名词王国的执行".阅读它让我更好地理解了什么是面向对象的编程,Java如何以一种极端的方式实现它,以及函数式编程语言是如何实现的对比.)

oop paradigms haskell programming-languages functional-programming

91
推荐指数
6
解决办法
1万
查看次数

考虑到unsafePerformIO,Haskell真的是一种纯粹的功能语言吗?

Haskell通常被引用为纯函数式语言的示例.鉴于存在,这怎么可能是合理的System.IO.Unsafe.unsafePerformIO

编辑:我认为"纯功能"意味着不可能将不纯的代码引入程序的功能部分.

haskell type-systems functional-programming referential-transparency unsafe-perform-io

44
推荐指数
2
解决办法
6974
查看次数

Haskell中的monadic IO构造只是一个约定吗?

Haskell中的monadic IO构造只是一个约定,还是有一个实现原因呢?

你能不能只用FFI进入libc.so而不是你的IO,并跳过IO Monad组件?

无论如何它会起作用,或者结果是不确定的,因为Haskell评估懒惰或其他东西,比如GHC是IO Monad的模式匹配,然后以特殊方式或其他方式处理它.

真正的原因是什么?最后你最终会产生副作用.那么为什么不这么简单呢?

haskell

39
推荐指数
3
解决办法
3397
查看次数

对于IO monad,>> =和return的定义是什么?

在看到如何定义List和Maybe monad之后,我自然会对IO monad 的操作>>=return定义感到好奇.

monads haskell

38
推荐指数
2
解决办法
4174
查看次数

了解I/O monad

我仍在努力与Haskell,现在我遇到了一个问题,从这个例子包围我的思想输入/输出monad :

main = do   
line <- getLine  
if null line  
    then return ()  
    else do  
        putStrLn $ reverseWords line  
        main  

reverseWords :: String -> String  
reverseWords = unwords . map reverse . words
Run Code Online (Sandbox Code Playgroud)

我理解,因为像Haskell这样的函数语言不能基于函数的副作用,所以必须发明一些解决方案.在这种情况下,似乎所有东西都必须包裹在一个do块中.我得到了简单的例子,但在这种情况下我真的需要一些解释.

为什么do在I/O操作中使用一个单独的块是不够的?为什么你必须在if/else情况下打开全新的?此外,什么时候,我不知道如何调用它,domonad的"范围" 结束,即你什么时候才能使用标准的Haskell术语/函数?

haskell functional-programming

6
推荐指数
2
解决办法
325
查看次数

comonad 的简洁总结。(其中 monad 是“不纯计算的类型”)

就简洁的总结而言 - 对Monad 的这种描述似乎获胜- 将它们描述为“不纯计算的类型”。

对 comonad 的等效简洁(一句话)描述是什么?

monads category-theory comonad

4
推荐指数
1
解决办法
403
查看次数

深入探讨何时应该在 Pandas 函数中使用 Inplace 参数以及为什么不使用它?

在操作数据帧时,在 Pandas 函数中使用就地参数可能是很常见的。

Inplace是在不同函数中使用的参数。一些函数中使用 inplace 作为属性,例如set_index(), dropna(), fillna(), reset_index(), drop(), replace()等等。该属性的默认值为False,它返回对象的副本。

我想详细了解什么时候在 pandas 函数中使用是好的做法inplace,什么时候也不应该这样做,以及原因。您能否在示例中进行演示以供参考,因为这个问题在使用 pandas 函数时很常见。

例如:

df.drop(columns=[your_columns], inplace=True)

在这种情况下,建议使用 inplace 和 drop 。另外,如果某些变量喜欢list依赖于数据框。就地更改它会影响依赖于它的其他变量的结果。另一个问题是在 pandas 数据帧上使用就地阻止方法链接。

python dataframe pandas

1
推荐指数
1
解决办法
733
查看次数