#Implement the basic prototype of set, but it still needs friendly syntax
#savepoint 1
Revert "#savepoint 1"

This reverts commit 1c08109e6dc4dd5f9b74cab87d49a7d879a45018.
#save pint 2
#save point 3
#update
#fix bugs
#every infrastructure is done except final testing
#Improve the funtion registration process and the function definition, it's much easier and neater than before.
#Add normalized function