import java.io.* ;
abstract class ScalarProduct< A> {
public abstract Integer scalarProduct
( A second
) ; }
class Nil extends ScalarProduct< Nil> {
Nil( ) { }
public Integer scalarProduct
( Nil second
) { return 0 ;
}
}
class Cons< A extends ScalarProduct< A>> extends ScalarProduct< Cons< A>> {
public A tail;
value = _value;
tail = _tail;
}
public Integer scalarProduct
( Cons
< A
> second
) { return value * second.value + tail.scalarProduct ( second.tail ) ;
}
}
class _Test{
return _main( n, 0 , new Nil( ) , new Nil( ) ) ;
}
if ( n == 0 ) {
return first.scalarProduct ( second) ;
} else {
return _main( n- 1 , i+ 1 , new Cons< A> ( i, new Cons< A> ( 2 * i+ 1 ,first) ) , new Cons< Cons< A>> ( i, new Cons< A> ( i* i, second) ) ) ;
//return _main(n-1, i+1, new Cons<A>(2*i+1,first), new Cons<A>(i*i, second));
//return _main(n-1, i+1, first, new Cons<A>(i*i, second));
}
}
}
class Test{
public static void main
( String [ ] args
) { System .
out .
print ( "Enter a number: " ) ; try {
System .
out .
println ( _Test.
main ( val
) ) ; System .
err .
println ( "Not a valid number" ) ; System .
err .
println ( "Unexpected IO ERROR" ) ; }
}
}
aW1wb3J0IGphdmEuaW8uKjsKYWJzdHJhY3QgY2xhc3MgU2NhbGFyUHJvZHVjdDxBPiB7CiAgICBwdWJsaWMgYWJzdHJhY3QgSW50ZWdlciBzY2FsYXJQcm9kdWN0KEEgc2Vjb25kKTsKfQpjbGFzcyBOaWwgZXh0ZW5kcyBTY2FsYXJQcm9kdWN0PE5pbD57CiAgICBOaWwoKXt9CiAgICBwdWJsaWMgSW50ZWdlciBzY2FsYXJQcm9kdWN0KE5pbCBzZWNvbmQpIHsKICAgICAgICByZXR1cm4gMDsKICAgIH0KfQpjbGFzcyBDb25zPEEgZXh0ZW5kcyBTY2FsYXJQcm9kdWN0PEE+PiBleHRlbmRzIFNjYWxhclByb2R1Y3Q8Q29uczxBPj57CiAgICBwdWJsaWMgSW50ZWdlciB2YWx1ZTsKICAgIHB1YmxpYyBBIHRhaWw7CiAgICBDb25zKEludGVnZXIgX3ZhbHVlLCBBIF90YWlsKSB7CiAgICAgICAgdmFsdWUgPSBfdmFsdWU7CiAgICAgICAgdGFpbCA9IF90YWlsOwogICAgfQogICAgcHVibGljIEludGVnZXIgc2NhbGFyUHJvZHVjdChDb25zPEE+IHNlY29uZCl7CiAgICAgICAgcmV0dXJuIHZhbHVlICogc2Vjb25kLnZhbHVlICsgdGFpbC5zY2FsYXJQcm9kdWN0KHNlY29uZC50YWlsKTsKICAgIH0KfQpjbGFzcyBfVGVzdHsKICAgIHB1YmxpYyBzdGF0aWMgSW50ZWdlciBtYWluKEludGVnZXIgbil7CiAgICAgICAgcmV0dXJuIF9tYWluKG4sIDAsIG5ldyBOaWwoKSwgbmV3IE5pbCgpKTsKICAgIH0KICAgIHB1YmxpYyBzdGF0aWMgPEEgZXh0ZW5kcyBTY2FsYXJQcm9kdWN0PEE+PiBJbnRlZ2VyIF9tYWluKEludGVnZXIgbiwgSW50ZWdlciBpLCBBIGZpcnN0LCBBIHNlY29uZCl7CiAgICAgICAgaWYgKG4gPT0gMCkgewogICAgICAgICAgICByZXR1cm4gZmlyc3Quc2NhbGFyUHJvZHVjdChzZWNvbmQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBfbWFpbihuLTEsIGkrMSwgbmV3IENvbnM8QT4oaSwgbmV3IENvbnM8QT4oMippKzEsZmlyc3QpKSwgbmV3IENvbnM8Q29uczxBPj4oaSwgbmV3IENvbnM8QT4oaSppLCBzZWNvbmQpKSk7CiAgICAgICAgICAgIC8vcmV0dXJuIF9tYWluKG4tMSwgaSsxLCBuZXcgQ29uczxBPigyKmkrMSxmaXJzdCksIG5ldyBDb25zPEE+KGkqaSwgc2Vjb25kKSk7CiAgICAgICAgICAgIC8vcmV0dXJuIF9tYWluKG4tMSwgaSsxLCBmaXJzdCwgbmV3IENvbnM8QT4oaSppLCBzZWNvbmQpKTsKICAgICAgICB9CiAgICB9Cn0KY2xhc3MgVGVzdHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBbXSBhcmdzKXsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJFbnRlciBhIG51bWJlcjogIik7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgQnVmZmVyZWRSZWFkZXIgaXMgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKFN5c3RlbS5pbikpOwogICAgICAgICAgICBTdHJpbmcgbGluZSA9IGlzLnJlYWRMaW5lKCk7CiAgICAgICAgICAgIEludGVnZXIgdmFsID0gSW50ZWdlci5wYXJzZUludChsaW5lKTsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKF9UZXN0Lm1haW4odmFsKSk7CiAgICAgICAgfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiTm90IGEgdmFsaWQgbnVtYmVyIik7CiAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgewogICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIlVuZXhwZWN0ZWQgSU8gRVJST1IiKTsKICAgICAgICB9CiAgICB9Cn0=
compilation info
Main.java:30: error: constructor Cons in class Cons<A#2> cannot be applied to given types;
return _main(n-1, i+1, new Cons<A>(i, new Cons<A>(2*i+1,first)), new Cons<Cons<A>>(i, new Cons<A>(i*i, second)));
^
required: Integer,A#1
found: Integer,Cons<A#1>
reason: actual argument Cons<A#1> cannot be converted to A#1 by method invocation conversion
where A#1,A#2 are type-variables:
A#1 extends ScalarProduct<A#1> declared in method <A#1>_main(Integer,Integer,A#1,A#1)
A#2 extends ScalarProduct<A#2> declared in class Cons
1 error
stdout