此包实现ipython小部件在里面伊哈斯克尔。前端(javascript)由jupyter/ipython笔记本环境提供,而后端是在haskell中实现的。
要了解有关小部件消息传递协议的更多信息,请参阅消息规范.md.
有贡献的例子
如果您想贡献更多笔记本示例,请在示例/
文件夹。在提交之前,请确保它们可以连续执行,并且然后使用以下命令从Nootebooks中删除输出:
jupyter nbconvert*.ipynb--到笔记本--就地--清除输出
要做的事情
如何。。。
这是一个迷你指南,适用于希望更新到更新的小部件规范但没有深入项目的深处
添加新属性
如果要添加新属性,则必须:
- 在中创建新的单例单体.hs在类型内部
数据字段
.
- 按照模型中的指定写入字段的序列化密钥(请参见消息规范.md)在内部
toKey(目标键)
功能位于单体.hs
- 因为我们使用
单吨吨
库中,必须在中定义属性的别名通用.hs以便能够在运行时更轻松地使用它。
- 现在您必须指定字段的类型。编辑类型族
字段类型
在类型.hs
首先,您必须检查属性是仅用于一个小部件,还是来自一个公共类。你可以在ipywidget回购.
- 如果只针对一个小部件:
- 编辑
类型实例WidgetFields<WidgetNameType>=。。。
在类型.hs,将新字段添加到字段数组中。
- 修改
mk<小工具名称>
在模块/小工具名称.hs
,添加属性的默认值。如果小部件还没有任何属性,您可以检查如何在其他小部件上执行此操作。
- 如果是普通类:
- 编辑
type<ClassName>=。。。
在类型.hs
- 编辑
默认<ClassName>Widget
函数,添加该属性的默认值。
一些小部件在修改值时从前端接收消息(例如滑块、文本区域、按钮…)。您必须修改通信
从类实例化的函数IHaskell小工具
。您可以在以下位置找到示例:国际幻灯片.hs
常见问题解答
在ihaskell中使用小部件时,会遇到很多编译错误。如果你对Haskell不太熟悉,可能会有点难以理解,这是一个迷你指南,当你在Google中粘贴错误时(希望如此)会出现。
setField:没有实例。。。
您可能在尝试如下使用setField时遇到此错误:
<交互式>:1:1:错误:•(Data.Vinyl.Lens.RecElem)无实例数据。乙烯基。核心。可采收水平“Iaskell-widges-0.3.0.0:I询问。显示器。小工具。单体。索引“ihaskell-widgets-0.3.0.0:ihaskell。显示器。小工具。单体。索引'[]'[](数据.Vinyl.TypeLevel.RIndex“ihaskell-widgets-0.3.0.0:ihaskell.Display.widgets.Singletons.Index”[])由“setField”的使用引起•在表达式中:setField选择Index 0在“it”的方程式中:it=setField选择索引0
此错误意味着没有调用的字段索引
对于这个特定的小部件。您可以在屏幕上显示所有使用的窗口小部件可用的字段属性小部件
.
setField:无法将预期类型SField f与实际类型匹配
如果出现这样的错误,您可能忘记将字段名放在的第二个参数中setField(设置字段)
.
<交互式>:1:25:错误:•无法匹配预期的类型“ihaskell-widgets-0.3.0.0:ihaskell”。显示器。小工具。单体。实际类型为“[a0]”的SField f•在“setField”的第二个参数中,即“[苹果”、“桔子”、“梨”]”在表达式中:setField selectMultiple[“Apples”,“Oranges”,“Pears”]在“it”的等式中:it=setField selectMultiple[“苹果”,“橘子”,“梨”]•相关绑定包括::ihaskell-widgets-0.3.0.0:ihaskell。显示器。小工具。类型。FieldType f->IO()(绑定在<interactive>:1:1)