The single quote is essentially saying "use this as is", so it is literally ((2 . *value*))) not the value you are trying to pass. If you want to dynamically change the condtions, you will need to manually construct the list with calls to (list ...) and (cons ...).