title_body: Why Strict evaluation operator "!" used in record definition used in Plutus core? While declaring records for use in Plutus strict operator is used like this.
  data Auction = Auction
     { aSeller   :: !PubKeyHash
     , aDeadline :: !Slot
     , aMinBid   :: !Integer
     , aCurrency :: !CurrencySymbol
     , aToken    :: !TokenName
     } deriving (Show, Generic, ToJSON, FromJSON, ToSchema)
  
  Does this mean that Plutus core does not use lazy evaluation?
upvoted_answer: This is correct. Plutus Core uses eager evaluation. You can see this in the first section of the Plutus Core Specification. I'm not sure why however I'd expect it is to allow you to accurately estimate fees and avoid infinite data structures.
  This PDF contains the formal language specifications of the Plutus Core language.