打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

Module:DataType

来自音MAD维基

此模块的文档可以在Module:DataType/doc创建

local D = {}
local C = require("Module:Class")
local F = require("Module:Functional")
local dot = F.dot
local class = C.class

D.Nothing = {
	value = {nil},
    fmap = function(self, f)
         return self
    end,
}
D.Just = {
	_init = function(self, x)
		if x == nil then
			return D.Nothing
		end
		self.value = x
		return self
	end,
	fmap = function(self, f)
		self.value = f(self.value)
		return self
	end,
	join = function(self)
		return self.value
	end
}
D.Just = class(D.Just)

D.IO = {
	_init = function(self, f, ...)
		local args = {...}
		self.performIO = function() return f(args) end
		return self
	end,
	fmap = function(self, f)
		self.performIO = dot(f, self.performIO)
		return self
	end,
}
D.IO = class(D.IO)

return D