                 writeBasicType(name: name, backed: backed, to: &output)
             case .function(let functionType):
                 writeTypealias(name: name, functionType: functionType, to: &output)
-                writeFunctionType(name: name, functionType: functionType, to: &output)
+                writeUnitFunction(name: name, functionType: functionType, to: &output)
                 writeEncodeInternal(name: name, functionType: functionType, to: &output)
                 writeDecode(name: name, functionType: functionType, to: &output)
                 writeRun(name: name, functionType: functionType, to: &output)

        }
        output.append(")))")
        if let returnType = functionType.returnType, case .function = parser.typesMap[returnType]! {
            output.append(".\(returnType)")
        }
        output.append(" }\n    }\n}\n\n")
    }

        }
    }
    
    private func writeUnitFunction(name: String, functionType: Parser.FunctionType, to output: inout String) {
        output.append("""
            extension Function.A {
                var \(name)Unit: \(name)Producer {
                    return { Function.A(producer: .\(name)(.init(self
            """)
        for (i, type) in functionType.argumentTypes.enumerated() {
