小编Phr*_*hro的帖子

在交互模式下运行脚本之前,如何将脚本传递给 Sage?

在我的 Python 工作流程中,我通常使用该-i标志来打开 Python 解释器,该解释器首先执行我正在处理的脚本,然后允许我与其交互。例如,在test.py

#!/usr/bin/env python
print("Hello World")
x=2
Run Code Online (Sandbox Code Playgroud)

当我python -i test.py从命令行运行时,我收到以下输出:

Hello World!
>>> 
Run Code Online (Sandbox Code Playgroud)

交互模式已启用,但脚本中所做的所有定义都可供我使用。键入x将产生2.

Sagemath 是否有类似的流程?我已经尝试过该-c标志,但sage -c "attach('test.sage')"加载我正在处理的模块后该命令无法进入交互模式。

理想情况下,会有一种比使用expect概述的解决方案更简单的解决方案,但如果这确实是最佳解决方案,那么如何使用expect来使 Sagemath 在加载特定文件后启动交互式会话?

python interactive sage

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

有没有办法自动交换单子?

我编写了一个程序来Maybe从一对中取出一个:

deMaybe :: (a, Maybe b) -> Maybe (a, b)
deMaybe (_, Nothing) = Nothing
deMaybe (x,Just y) = Just (x, y)
Run Code Online (Sandbox Code Playgroud)

我知道这Maybe是一个单子并且(,) a是一个函子(以及其他类型类)。我想知道是否缺少更高级别的功能,例如:

commute :: (Functor f, Monad m) => f (m a) -> m (f a)
Run Code Online (Sandbox Code Playgroud)

我的问题是:我可以deMaybe使用更通用的类型签名(例如假设的类型签名)来编写commute,承认我正在尝试将一个函子传递到另一个函子吗?fmap可以使用、>>=、 、 &c等函数来完成此操作吗pure

monads haskell lift

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

标签 统计

haskell ×1

interactive ×1

lift ×1

monads ×1

python ×1

sage ×1