我想在 Haskell 中定义一个数据类型,它由一个Int
常量沿线参数化:
data Q (n :: Int) = Q n (Int,Int) -- non-working code
为了让我定义类型的函数:
addQ :: (Q n)->(Q n)->(Q n)
addQ (Q k (i1,j1)) (Q k (i2,j2))) = Q k (i1+i2,j1+j2)
Run Code Online (Sandbox Code Playgroud)
这个想法是,通过这种方式,我能够限制Q
具有相同的添加n
。直觉上,感觉这应该是可能的,但到目前为止,我所有的(公认的新手)尝试都停留在 GHC 的严格性上。
我使用 matplotlib 的 FuncAnimation 创建了一个表面绑定过程的简单动画。然而,结果非常缓慢。我怀疑这是因为我在每一帧都重绘了所有元素,但我还没有想出解决方法。任何帮助表示赞赏。
import matplotlib
matplotlib.use('TKAgg') # import proper graphics back-end for Mac OS X
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
from matplotlib.collections import PatchCollection
from random import *
nx = 20 # x size of lattice
ny = 20 # y size of lattice
pAds = 0.01 # adsorption probability per time step
pDes = 0.0075 # desorption probability per time step
tMax = 500 # number of time …
Run Code Online (Sandbox Code Playgroud) 我试图为一系列圆圈设置动画,以便随着时间的推移改变颜色.以下代码生成单帧的示例:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
nx = 20
ny = 20
fig = plt.figure()
plt.axis([0,nx,0,ny])
ax = plt.gca()
ax.set_aspect(1)
for x in range(0,nx):
for y in range(0,ny):
ax.add_patch( plt.Circle((x+0.5,y+0.5),0.45,color='r') )
plt.show()
Run Code Online (Sandbox Code Playgroud)
如何定义函数init()和animate(),以便我可以使用例如:
animation.FuncAnimation(fig, animate, initfunc=init,interval=200, blit=True)
Run Code Online (Sandbox Code Playgroud)